agent/prompts/instructions.md, a plain Markdown file with one
placeholder. Editing it is the whole process. There is no restart and no
rebuild.
The placeholder
{agent_name} is replaced with the value of AGENT_NAME. Substitution is
str.replace, not str.format, so a prompt containing a JSON example or any
other brace is safe.
It is the only placeholder. Everything else in the file is literal text sent to
the model.
Why there is no restart
LiveKit runsentrypoint() per job. Assistant.__init__ calls
load_instructions(), and that reads the file every time. So a save lands on
the next call. A call already in progress keeps the prompt it started with.
Two ways to edit it
Same file, either way.- Your editor
- The console
Open
agent/prompts/instructions.md and save. Compose mounts the directory
into both containers, so there is nothing to rebuild.What the console write needs
CONSOLE_WRITES_ENABLED=true. Compose sets it. It defaults tofalsein code.- The backend’s read-write mount of
./agent/prompts. Compose sets that too. The agent’s mount of the same directory is:ro, because one writer is the reason a save can be atomic.