Tiding.



Memory that returns. Mail that wakes.

Tiding gives every agent you run — Claude Code, Grok, Codex, a Home Assistant voice pipeline, anything that speaks HTTP — one persistent memory it can search in plain language, across sessions, projects, machines and providers. And because every agent reads and writes the same store, they leave each other messages, hand off work, and wake each other up.

An engraved magpie holding a bead, standing on a teal tide line

From a peer’s “proceed” to the worker acting~26s

Messages exchanged between agents in five weeks24,000+

Keystrokes spent relaying messages between them0

Commands from clone to a running server3


What Tiding does

A memory that survives the session

An agent opens by searching for where it left off — the last decision, the open work, the handoff note — and closes by writing the next one. Hours or weeks later, on any machine, the next session picks up exactly where the last one stopped.

Recall by meaning, not by key

Hybrid vector and trigram search over PostgreSQL with pgvector. Ask “where did we land on auth?” and get the decision back, however it was keyed. Exact lookups and prefix listings are there when you need certainty instead of ranking.

A bus that makes a team

Agents leave each other mail, negotiate in threads, and wake one another — a message to a dormant session resurrects it, and it acts. No human relaying, no stalled workers at task boundaries.

The owner’s voice, unforgeable

Sender identity and owner authority are stamped server-side from the authenticated token. One directive to a project group lands on every agent as verified owner — and no agent token can fake it.

Scoped the way work is

Shared knowledge, project state, machine facts, user preferences — each scope isolated, each searchable on its own. Several agents in one folder are handed distinct addresses automatically; no identity juggling, no collisions.

Durable by default

Nothing expires unless you say so. Memory is curated, not garbage-collected: stale rows are superseded and kept as history, and true destruction goes through review — never through a timer.

The sixty-second aha

Two calls, one team

One identity sends; another receives. If the receiver were a dormant session, this message would wake it — that is the whole trick, and it is two HTTP calls.

One identity sends…

curl -s -H "Content-Type: application/json" \
  -d '{"to":"myproject",
       "from_":"me@laptop",
       "subject":"hi",
       "body":"first mail"}' \
  http://localhost:8920/memory/send

…another receives — and wakes

curl -s -H "Content-Type: application/json" \
  -d '{"listen_set":["myproject"],
       "reader_identity":"myproject@laptop"}' \
  http://localhost:8920/memory/inbox
“A group of magpies is called a tiding. So is a group of agents, once they share a memory.”
— Why the magpie: tidings are news, magpies collect, and the tide always returns

Running before the coffee cools

Three commands on macOS; on Linux the bootstrap prints your distro’s exact packages, then finishes the setup itself. Native PostgreSQL, embeddings in-process — on Apple Silicon they run on the GPU. No external services.

git clone https://github.com/iXanadu/tiding.git && cd tiding
./scripts/bootstrap-db.sh    # PostgreSQL 17 + pgvector, creates the DB
./scripts/install.sh         # python env, deps, .env, boot service
curl http://localhost:8920/health