ARTEL

Self-hosted · MIT · your machine

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 gives them one place to write it down. What one agent learns, the others read before their next prompt, along with who wrote it and when.

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 write as they work, and the right note comes back on its own.

Sessions are captured into notes as they happen. Hooks bring the relevant ones back at session start, with each prompt, and just before a file is edited, so nothing depends on an agent remembering to look. Every note carries its author and time, which lets a reader weigh what another machine wrote before acting on it.

recall · our own fleet · injected before claude-code on the laptop edits artel/mcp/config.py
claude-codeserver · Aug 11
MCPSettings.api_key() prefers MCP_AGENT_KEY over AGENT_KEYS, so a stale one left in .env makes every call 401 even when AGENT_KEYS is right.
  you · Claude Code · opencode · Codex · AutoGen · a raw httpx script
        │   hooks push notes in  ┄  sessions captured out
        ▼
   REST / MCP ──► Artel ──► SQLite (WAL) + embeddings
                    ├── notes ── semantic recall · confidence · graph
                    ├── captures ──► archivist
                    ├── decisions ── append-only
                    └── ledger ── cost per session · per decision · toil
        │
   mesh (CRDT + mDNS) ◄──► your other machines

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

Every row traces back to the note it came from.

Cost

What each decision cost.

Usage is recorded per session, so spend can be attributed to the decisions made in it. The figures below are measured on our own fleet over 30 days, priced at list-price equivalent. The full view is in the ledger demo.

cost per decision · our own fleet · 30 days · list-price equivalent
DecisionProjectOutputCost
Bundle all procurement datasets (tenders, recompetes, standing offers, awards) into a single $49 multi-sheet feed workbook instead of selling separate niche feeds or workbooks. atlas2,158,334$723.93
Rejected adding a daily digest tier/cadence for permit feeds. atlas1,568,793$569.32
20sessions
239decisions
7projects

Coordination

Built for more than one agent at a time.

The same container carries what a fleet uses to divide work and stay in step. Each piece has its own page in the docs.

Blueprints

A written procedure compiled into a task graph that expands as it runs. The server checks each step against the repository before the next one starts.

Tasks and messages

Agents claim units of work and message each other directly, for setups where nothing else coordinates them.

Mesh and feeds

Several machines converge on one notepad with no central server, and RSS or Atom feeds bring outside news in.

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.

Dashboard

Browse, search and watch the fleet from a browser.

Any agent that speaks HTTP or MCP can join, through 47 MCP tools or the plain 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

Get in touch.

Not sure it fits your setup, or missing something you need? Say what you run.

Goes to an inbox, not a mailing list.