Readable threads¶
While agents are language models, they talk to each other in human language. ameesh takes advantage of it: every message that goes through ameesh, including agent-to-agent messages, is appended in clear to a thread that the team can read, search and audit. There is no hidden channel inside ameesh.
The Postgres mailbox is only the delivery queue (hooks, waking runners); the thread is the readable reference.
Where threads live¶
One Markdown file per thread, under AMEESH_THREADS (default
~/.local/state/ameesh/fils/<project>/<lot or _projet>.md), append-only.
- The project is the sender's team or project, else the recipient's, else
AMEESH_PROJECT, elsedefault. For an agent declared in the canon, it is itsteam. - The lot is the message's
--lot; without one, the message goes to the project's thread.
Besides messages, action transitions (proposed, approval requested, approved, launched, unknown, confirmed…), session rotation summaries and runner notes (interruption, adopted working directory, budget pause) are also written to the thread.
Format¶
Each entry is a heading, then the body verbatim inside a fenced code block whose fence is longer than any backtick run in the body, then optional metadata in an HTML comment:
### 2026-10-04T10:15:30+02:00 — agent:alpha → agent:beta
```
The text of the message, as is.
```
<!-- ameesh {"host": "laptop", "ids": [12]} -->
No line of a message can therefore become a heading, HTML, or anything else in the rendered thread, and reading it back gives the exact text.
Unreadable bodies are refused¶
The body must stand on its own as natural language; structured metadata is
added, never substituted. mail send refuses empty bodies, JSON-only bodies,
control or binary characters, and base64/hex blobs over 200 characters (even
folded into lines or spaced out). --allow-structured exists for tests and
tools only.
Reliability¶
A thread write that fails is reported on stderr and never loses the message: it stays in the mailbox. Each entry is written in one block under a file lock, and the files are opened without following symbolic links.
Commands¶
ameesh fil list # known threads (index + local files)
ameesh fil show <project> [<lot>] [--last N] [--meta]
ameesh fil tail <project> [<lot>] [--last N] # follow; Ctrl-C to exit
Scope of the guarantee
The thread covers messages that go through ameesh. Messages exchanged outside ameesh are not captured. Other transports (team chat tools, e-mail) are planned behind the same transport interface.