~/harness. When you ask for a change in how
your agent behaves — be shorter, always answer in Russian, keep a ledger of
what I spend, message me on Telegram when the report is ready — the agent
edits a file in there, and the next thing you say is answered by the edited file.
You never have to open it. This page is for the moment you want to look: what is
in that repository, which file your request touched, and why the change takes
effect without anything being deployed.
Two things live on the machine
Nothing else is checked out beside
~/harness: one machine runs one harness, so
there is no second copy and no path to disambiguate.
What is in ~/harness
This is the tree on the machine these pages were written against, an ordinary account that started from the default starter and has been asked for things through the day:- The
.mdfiles at the root are the harness’s own documentation. They came with the starter and the agent reads them when it is about to change something. The platform never opens them. programs/splox/main.pyis who answers you: which agent takes a message, which model it runs on, which tools it may call, how long it is allowed to keep working.programs/splox/prompts/*.mdis what that agent is told. English, not code — see below.programs/splox/hooks/*.pyare the rules of a single turn: what goes into the prompt, which model is picked, what happens before and after a tool call, when a turn has to stop.programs/compiler/came with the starter and runs nothing on its own. It is a worked example, there to be read: “an example, and it is meant to be read before it is copied.”programs/nightly/andprograms/telegram/are programs of their own — a job that fires every morning and a bot that answers on Telegram. They were added by asking for them.tools/*.pyare things the agent can call by name: a ledger, a note-keeper, a file helper.
programs/<name>/main.py. A
harness with nothing to run is not a harness, and publishing one is refused.
The prompt is English
The single most useful file to read is the prompt, because it is not code. This isprograms/splox/prompts/assistant.md on that machine, in full:
You are a general-purpose assistant with a Linux sandbox of your own. Answer what was asked, do the work rather than describing it, and say plainly when something did not work. Prefer doing over asking: pick a sensible default and go, and come back for a decision only when getting it wrong would cost something that cannot be undone. Read a file before you edit it and check a command’s output before you build on it. Your harness is the checkout at /home/daytona/harness, and it is where the answers about yourself live: the programs you run on, the agents they declare, the hooks that build this prompt. Asked to be connected to something — a bot, a webhook, a schedule, a service that should reach you — read the files there and write a program, rather than answering from memory about how the platform works.When your agent behaves in a way you did not expect, that file is usually the explanation, and it is the file most requests end up changing.
Which file your request touches
The last row is the one people get wrong in both directions. A standing
preference is a note; a rule about how every turn works is a harness change. Ask
for the outcome and let the agent choose — but if it wrote a note where you
wanted a rule, saying “make that part of who you are, not a note” is enough.
Asked, not stored
The reason none of this needs deploying: the platform does not keep a copy of your agent. When a message arrives it asksmain.py who should answer, then asks
the same file who that agent is — the prompt, the model, the tools — and reads
the answer off the disk at that moment.
So an edit lands on the next message. There is no build, no restart, no reload
button, and nothing to wait for. It also means the reverse: an edit made on this
machine is only on this machine until it is published. A new chat and any second
machine you own read the last published version.
What the agent wrote: the declaration in main.py
What the agent wrote: the declaration in main.py
This is the block
main.py answers with when the platform asks who Assistant
is. It is here as evidence, not as something to copy — the agent writes it.prompt("assistant") passes a reader rather than the text, which is what makes
an edit to the prompt file land on the next turn instead of the next restart. The
full reference for every field is in Agents.Looking without writing
Two doors open onto this machine for a person: an editor in the browser and a terminal. Both are for reading what the agent wrote, checking a file, watching a log — see VS Code and SSH.Versions
Which version this machine runs, what changed in it, and how to go back.
Files
Where the work accumulates, and how to get a file out.

