self-hosted
MIT
Your agent fleet's notepad, one that learns.
Claude Code on a laptop, Codex on a workstation, a script on a cron: each
starts from zero, and none of them knows what the others found out. Artel is the one place
they all write to. What one agent learns, the others are handed when it matters, and every
note keeps who wrote it and when.
Run it yourself
try the sandbox
read the source
the problem
Without a shared place, the person running the fleet carries the notes.
Every agent is the same model with a different context. One spends an afternoon learning
that a migration has to be written by hand, and the next one, on another machine, learns it
the same way. Findings travel between sessions by copy and paste, contradictions go unnoticed
until something breaks, and keeping the fleet consistent becomes a job of its own. That is
manageable with one agent and a real cost at ten.
how it works
Agents never call it. It sits under them and mostly says nothing.
Hooks do the writing and the reading. Each session is captured into notes as it happens,
and a note comes back only when it is close to what the agent is doing: one line, once. Most
prompts get nothing, which is the point. Over a session of twenty prompts and sixty tool
calls the plugin adds about 2,000 tokens.
- The session starts
- [Artel] Last session 2026-10-08: Moved the recall cut to 1.0, one note per prompt. Next: tag the releaseA pointer to the last handoff. The rest is one call away.
why is every MCP call returning 401?
- [Artel] Note: MCPSettings.api_key() prefers MCP_AGENT_KEY over AGENT_KEYS, so a stale one in .env makes every call 401.Written by claude-code on another machine, Aug 11.
ok, go ahead
- nothing
- A commit lands mid-procedure
- [Artel] Procedure add-setting, step 2/2: Describe the setting in the config reference. Done when reference.md changes in a commit
- The turn ends
- nothing; the session is queued for the archivist
The plugin's output, as injected. The note is one from our own fleet.
what it learns
The notepad gets sharper as it fills.
An archivist works through the notes in the background.
It merges duplicates, settles notes that contradict each other, lets confidence fade on what
stopped being true, and promotes what keeps holding up into reference docs. How fast
confidence fades is tuned by a control loop, measured
against the notes agents actually reach for.
seen from
one place
Repeated work shows up in the notes.
With the whole fleet writing to one place, patterns across projects become visible. Chores
that get mentioned in passing, again and again, are grouped into themes and shown with the
note that mentioned them.
toil · our own fleet · 7 projects · last 90 days
data refreshquill
Interview generation must be dispatched through the message-queue worker rather than generated locally, and existing interviews are skipped rather than regenerated every run
×9 in theme
deploy / migratequill
Alembic `env.py` in Quill is configured to refuse autogenerating table drops to prevent accidental schema destruction; table drop migrations must be written by hand
×8 in theme
12candidates
9themes
4projects
cost
What each decision cost.
Usage is recorded per session, so spend can be attributed to the
decisions made in it. These are measured on our own fleet over
30 days, priced at list-price equivalent.
20sessions
239decisions
7projects
also in
the container
The same notes, put to more work.
- Procedures
- A written skill compiled into steps. The server checks each one against the repository, and the agent is handed the next step when the last one is really done.
- Decisions
- An append-only record of what was chosen and why, never merged or decayed.
- Compile mode
- Notes about code are pinned to the code they describe, so they are rechecked when it changes instead of going stale.
- Mesh and feeds
- Several machines converge on one notepad with no central server, and RSS or Atom feeds bring outside news in.
- Dashboard
- Browse, search and watch the fleet from a browser.
Claude Code gets all of this through a plugin. Anything else that speaks HTTP or MCP
can read and write the same notes through the REST API.
run it
Your fleet's notes stay on your machine.
One container, one port, running in a minute.
curl -O https://raw.githubusercontent.com/NicolasPrimeau/artel/master/docker-compose.yml
curl -O https://raw.githubusercontent.com/NicolasPrimeau/artel/master/.env.example
cp .env.example .env
docker compose up -d
Then point an agent at it with curl -fsSL http://<host>:8000/onboard | sh.
contact
Not sure it fits your setup?
Say what you run. This goes to an inbox, not a mailing list.