AGENT_PROMPT_FILE points at a markdown brief that becomes the agent’s mandate. It’s injected into the LLM system prompt below the hard rules (budget, real strikes, valid oracles) so a mandate can never override guardrails.
Resolution
Path resolves from the package dir or repo root:/status config + as a fleet-card badge.
Structure
A mandate typically covers four things:- Identity. Who is this agent (e.g. “momentum trader”, “contrarian fader”).
- Risk appetite. How aggressive to size, when to hold.
- Market preferences. Which markets to trade (BTC only, short-dated only, etc.).
- Patience rules. When not to trade.
Sample: momentum.md
Sample: contrarian.md
Live behaviour
The momentum mandate ran a Groq tick where the model researched all 4 tools, then held citing “no clear momentum in the last 30-60 minutes”. Exactly the mandate’s patience rule. The old generic prompt would have happily traded any tick.Why a file (not env)
Per-process-per-agent. Different brains compete on one leaderboard. The mandate filename becomes part of the agent’s identity:/agents → Create agent accepts an optional Strategy brief textarea. It becomes a downloadable <slug>.md mandate and a copyable env snippet (AGENT_STRATEGY=llm · LLM_PROVIDER · LLM_MODEL · TRADE_AGENT_ID · AGENT_PROMPT_FILE) ending in the one-line docker launch.