Skip to main content
The assistant you talk to on the Agents page is not a hard-coded chatbot. Condor is itself an agent, built from the same parts as the agents you create β€” and every one of those parts is a plain file on disk you can open:
Agents you build with Agent Builder get the same layout under agents/<slug>/. There is only one kind of thing in Condor β€” an agent β€” and this page dissects the one you talk to.

AGENT.md β€” the brain

AGENT.md is the agent’s system prompt with a small frontmatter header:
agent_key names the LLM harness it thinks with β€” change it (or pick a model in the chat’s model picker) and the same brain runs on a different model. The body then does three jobs:
  1. Names its tools. Two MCP servers: mcp-hummingbot (market data, portfolio, executors, orders, bots, DEX discovery β€” the trading surface) and condor (notifications, routines, trading agents, servers, memory, skills, and consult/delegate). One deliberate absence: connecting or removing exchange keys is not available to the assistant β€” keys are managed by you, in Settings β†’ Keys and Wallets.
  2. Sets the routing discipline (next section).
  3. States the rules: lead with the answer; confirm dangerous actions (orders, swaps, LP changes) before acting; keep tool chains short; never explore source code.

A coordinator, not a tool-caller

The most important instruction in AGENT.md is a routing check that runs before any tool call:
  1. Does a skill match? Its skill index is injected into context as [SKILLS] β€” if a playbook covers the request, Condor reads it and follows its steps instead of improvising.
  2. Does a domain agent match? The [AGENTS] index lists your expert agents. Domain work goes to the specialist, which holds the domain’s tools and memory.
  3. Only then does it reach for raw tools.
When it routes to a specialist, it picks one of two calls: consult blocks and relays the answer inline β€” for quick lookups and small changes you are waiting on; delegate runs the task in a detached background session that pings you when done β€” for multi-step work like a full deployment or anything that waits on a backtest. One rule is absolute: Condor never hand-writes routine code in chat. Authoring or fixing a routine is always delegated β€” to itself, in a background session that reads the routine_cookbook playbook, writes the routine into the library, and tests it before reporting back.

Skills β€” how it operates

A skill is a playbook: when to apply it, and the steps. Each is a folder holding a SKILL.md:
The source field is worth a pause: builtin skills ship with Condor, but source: chat means Condor wrote this one itself β€” it discovered a reusable procedure during a conversation and saved it with manage_skill. The library is self-editing: skills get created, refined, and deleted as the agent works, and you can open any of them in a text editor. Here is the library on a real install: Two more mechanics:
  • A skill can carry a routine. references_routine: logs_summary in log_analyzer means the executable part is a routine, not prose β€” the skill says when, the routine does what. If the routine disappears, reading the skill flags it (routine_ok: false) rather than silently invoking nothing.
  • There is one shared library, and Condor is its only publisher. agents/_shared/skills/ (playbooks like routine_cookbook, strategy_builder, backtest_flow, self_improve) is read by every agent, but only the Condor assistant may publish into it β€” a shared playbook lands in every agent’s context, so it must read correctly from every seat. A skill that belongs to one domain agent is written to that agent instead.
Skills are advisory, not authority: executing what a playbook describes still passes the normal confirmation for dangerous actions.

Memory β€” what it knows about you

Skills are how the agent operates, shared across users. Memory is what it knows about you β€” per user, under store/user_<id>/, and shared across your sessions and with your trading agents. MEMORY.md is the index β€” one line per memory β€” and it is injected into every session as [USER MEMORY], so the agent starts each conversation already knowing the headline of everything it has learned. The detail lives in memories/<name>.md, read on demand:
That is a real memory, and it shows the shape well: one file, one fact, typed (preference | fact | feedback | reference), with a Why and a How to apply β€” this one written after two deployments failed, so the third wouldn’t. The agent’s writing rules are strict: save only what is new and stable about the user, never ephemeral conversation detail. Memory is also accountable. Every write and delete is appended to audit.log as a timestamped JSON line, and you can review or delete any memory yourself β€” /memory in Telegram, or ask the agent to run manage_memory(action="audit").

Memory vs. skills, in one table

Learn more