Artel

io.github.NicolasPrimeauPublished by GitHub account NicolasPrimeauv0.17.1Updated Nov 2, 2026

Self-hosted shared-memory & coordination mesh for AI agent fleets. You host it; agents connect.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowKnowledge & MemoryAI & ML

Overview

AI-generated overview

Self-hosted shared-memory and coordination server that lets a fleet of AI agents write notes once and get them back when relevant.

What you can do
  • Write and search shared notes across agents, with semantic (embedding-based) retrieval rather than keyword lookup
  • Capture agent sessions into notes automatically and queue them for background compaction
  • Run procedures as compiled steps, keep an append-only record of decisions, and pin notes about code to the source
  • Sync notes between several machines as CRDT feeds and subscribe to external RSS/Atom feeds
  • Browse, search and watch the fleet from a web dashboard
When to use it
Useful when several agents or sessions work on the same codebase or projects and keep rediscovering the same gotchas, or when you want continuity across sessions and machines without sending notes to a third-party cloud.
Requirements
A self-hosted Artel instance (one container, one port) reachable at the configured host; there is no public instance. The MCP endpoint needs the X-Agent-Id and X-Api-Key headers, obtained by registering an agent on that instance. Server-side setup uses environment variables such as AGENT_KEYS, UI_PASSWORD and optionally ANTHROPIC_API_KEY for the archivist.
Before you install
The server holds an agent API key in the X-Api-Key header, so treat it as a secret and scope agents to projects where possible. Notes, session captures and decisions are written to the shared store and visible to other agents on the instance. If an archivist key is configured, captured sessions are sent to that model provider for compaction. The dashboard is protected by UI_PASSWORD, and open agent registration should be controlled with REGISTRATION_KEY.

Installation

In SourceWeft

  1. Open Artel in the dashboard and add it to a workspace.
  2. Connect Custom headers credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Follow the launch instructions in the repository.

README

Artel

[CI] [License: MIT] [Glama] [Smithery] [Docs]

Your fleet's smart notepad. One that learns.

One pad that you and every agent you run write into. Whatever any of you figures out is written down once and handed back the moment it matters: the gotcha about this file right before you edit it, where you stopped on Friday, the thing another agent already learned the hard way. Nothing to file, nothing to tag, nothing to look up. A normal notepad waits to be opened; this one speaks up, in one line, and stays quiet when it has nothing worth saying, which is most of the time.

It also doesn't just accumulate. A background archivist works the pile while you're gone, so the pad gets sharper the more the fleet uses it. What one session learns at 3am, the rest know by morning; nobody solves the same thing twice.

You run it on your own machine. None of it goes to anyone's cloud.

What that looks like

An agent is about to…Artel sayswho wrote it
edit auth.py"the token refresh silently no-ops when the clock skews"a different agent, last month
start work Monday"Friday you stopped mid-migration; here's where"you, before the weekend
debug a flaky test"seen in March: it was the shared fixture, not the test"an agent on another machine
ask a questionthe one note that answers it, or nothing at allwhoever hit it first

Nobody opened a file to find any of that, and nobody had to know who to ask.


Quick start

There is no public instance to point at. This is your notepad, so you run it. One container, one port:

bash
curl -O https://raw.githubusercontent.com/NicolasPrimeau/artel/master/docker-compose.ymlcurl -O https://raw.githubusercontent.com/NicolasPrimeau/artel/master/.env.examplecp .env.example .env# edit .env: set UI_PASSWORD, and a key for the archivist if you want one# (ANTHROPIC_API_KEY, or OPENROUTER_API_KEY with ARCHIVIST_PROVIDER=openrouter)docker compose up -d

API + UI at http://<host>:8000, MCP at http://<host>:8000/mcp. Images at ghcr.io/nicolasprimeau/artel:edge.

Once running, register an agent:

bash
curl -fsSL http://<host>:8000/onboard | sh

mDNS note: the mdns service uses network_mode: host and only works on Linux. Remove it on Mac/Windows Docker Desktop.


Under the hood

A server, a database, and a librarian. Notes go in over HTTP or MCP, embeddings make them findable by meaning rather than keyword, and everything below the queue happens without an agent asking for it.

  you · Claude Code · opencode · Claude API · AutoGen        │   push: notes/skills/gotchas in  ┄  capture: sessions out        ▼   REST / MCP ──► Artel Server ──► SQLite (WAL) + embeddings                     ├── notes: semantic search · confidence decay · knowledge graph                     ├── captures queue ──► archivist compaction ──► notes                     ├── procedures · decisions · session handoffs                     └── archivist: capture · synthesis · merge · decay · promote        │   mesh (CRDT feeds + mDNS) ◄──► your other machines

What's inside

Each of these has a page in the docs; this is the map.

The pluginThe half that speaks up. One line when a note is close to what the agent is doing, silence otherwise. Agents never have to call anything.
CaptureSessions become notes on their own, spooled in ~10 ms so writing never slows an agent down.
ArchivistThe part that learns: merges duplicates, resolves contradictions, decays what stopped being true, promotes what held up.
Compile modeNotes about code pinned to the code, so they re-derive instead of rotting.
ProceduresA written skill compiled into steps. The server checks each against the repository and the agent is handed the next one when the last is really done.
DecisionsAppend-only record of what you chose and why. Never merged, never decayed.
Mesh and feedsSeveral machines converging as CRDTs, plus RSS/Atom subscriptions from the outside world.
DashboardBrowse, search, and watch the fleet from a browser.

Five kinds of note, with different lifespans: memory (fades if it stops being true), doc (settled reference), directive (standing instruction, never fades), skill (how to do a thing), compiled (pinned to source).

Any agent that speaks HTTP or MCP joins: Claude Code, OpenCode, Zed, a raw httpx script. See connecting clients.


REST API

All requests require X-Agent-ID and X-API-Key headers (except /agents/self-register and /onboard).

Full REST reference → covers every endpoint, generated from the OpenAPI schema. MCP tool reference → lists all 47 tools an agent can call.

A running server also serves interactive docs at /docs and the raw schema at openapi.json.


Configuration

Configured entirely through environment variables (or a .env file). The essentials:

VariableDescription
AGENT_KEYSagent-id:api-key pairs, comma-separated. Optional :proj1;proj2 suffix scopes an agent to projects.
UI_PASSWORDPassword for the dashboard.
ANTHROPIC_API_KEYEnables the archivist. Without it, Artel runs in passive mode.
REGISTRATION_KEYRequired by /agents/self-register. Unset disables open registration.
PUBLIC_URLExternally reachable base URL, used in OAuth metadata and onboarding.

Full configuration reference → covers all 56 settings across the server, MCP adapter, and archivist, generated from the settings classes.


Development

bash
uv sync --devuv run pytest tests/ -v

License

MIT. See LICENSE.md.

Source: README.md at commit 4361a67

Tools

0
This server asks for a credential such as an API key, so SourceWeft could not read its tools without one and has not indexed them.

Version history

1
  1. v0.17.1LatestSep 16, 2026

Score

60% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts