Shared memory for your team's coding agents.

Agents forget everything between sessions, so every convention gets re-explained and every past mistake gets repeated by whoever touches the code next. Tages keeps that knowledge in one place your whole team's agents can read and write.

npm install -g @tages/cli

Works with Claude Code, Cursor, Codex, and Gemini over MCP. Free tier, MIT licensed, self-hostable.

Semantic search that needs nothing running on your machine.

Ask in your own words. Embeddings are generated by an endpoint Tages runs, so there is no local model to install, no key to provision, and nothing to configure.

That is a correctness property, not just a convenience. When each developer embeds locally, one teammate running a different model quietly writes vectors into the shared index that cannot be compared to anyone else's. Similarity across two models is meaningless, so the results come back confident and wrong.

Running it in one place makes the index uniform by construction rather than by everyone remembering to configure the same thing. If the endpoint is ever unreachable, recall falls back to literal text matching. It never silently substitutes a different model.

$ tages recall "how do we handle database migrations safely"
 
convention supabase-cli-skips-letter-suffix-migrations
operational sync-interval
architecture storage-architecture
lesson rls-helper-diff-rule
convention post-migration-smoke-test-required
 
# not one of these contains the words "handle" or "safely"

Run against this project's own memory, ranked by similarity. Literal keyword search returns nothing for that phrasing.

Three commands, then your agent has the team's context.

A teammate joining an existing project runs these once per repository. Creating a project for the first time is the same path with tages init.

  1. Install the CLI

    One command. No Docker, no local model, no API key to provision.

    npm install -g @tages/cli
  2. Change into the repo you actually work in

    Memory binds to the directory you run the next command from. This is the step people get wrong, and it fails quietly rather than loudly.

    cd ~/work/your-project
  3. Join your team’s project

    Signs you in with GitHub if needed, checks your membership, and wires your agent. Then restart the agent.

    tages link --project-id <project-id>

Prefer not to install anything? The MCP server runs straight from npx: claude mcp add tages -- npx -y @tages/server

Source code says what exists. Memory says why.

Eleven structured types, so a memory is a typed fact an agent can act on rather than a paragraph it has to interpret. These are six of them.

convention
API routes are snake_case. Components are PascalCase, one per file.
decision
Chose Postgres over Mongo for pg_trgm fuzzy search. Revisit if write volume passes 10k/s.
architecture
Auth middleware lives in lib/auth.ts. JWTs are in httpOnly cookies, never localStorage.
lesson
Don’t cache the Supabase mock between tests — they need fresh state or ordering leaks.
anti_pattern
Never pass id in an upsert with onConflict. It causes a foreign-key violation.
pattern
Every API error returns { error, code, status }. Clients switch on code, never on message.

Built for an index several people write to.

Personal memory tools assume one developer who remembers what they stored. The moment a second person writes, the hard problems are correctness and trust.

One index, explicit membership

An owner invites by email. Membership is enforced in the database with row-level security, not in the client, so a non-member gets nothing rather than a filtered view.

Owners and admins write, members read

Roles are checked at the database layer. A read-only teammate cannot quietly poison the index everyone else depends on.

Memory is a managed artifact

Audit coverage, score quality, dedupe near-identical entries, and rewrite vague notes into imperative instructions an agent can follow. Bad memory gets corrected before it misleads the next session.

Local cache, cloud truth

Reads come from a local SQLite cache for speed and keep working offline. Writes sync to Postgres so the rest of the team sees them.

Agents reach it through 56 MCP tools, and you drive the same data from 42 CLI commands — remember, recall, audit, sharpen, dedupe, drift. Both counts are read off the shipped build, not the docs.

Pricing

Start free. The local-first mode keeps working whether or not you ever sign in.

Free

$0

For solo developers. Works offline.

  • 1 project (cloud sync)
  • 10,000 memories
  • 20 core MCP tools
  • SQLite local-first (unlimited offline projects)
  • tages brief generation
  • Community support

Pro

$14/month

For professional developers.

  • All 56 MCP tools
  • Up to 10 projects
  • 50,000 memories
  • Supabase cloud sync
  • Fuzzy + semantic search
  • Quality scoring + analytics

Team

$19/seat/mo

For shared codebases. 1–20 seats.

  • Everything in Pro
  • 100,000 memories per project
  • Team memory federation
  • RBAC + audit logging
  • Centralized seat billing
  • Priority support

Self-hosted

$0forever

Your infrastructure, your data.

  • Full feature parity
  • No memory limits
  • AES-256 encryption
  • Air-gapped compatible
  • MIT license
  • Community support

Questions about Team billing? support@tages.ai

Stop re-explaining your codebase to a machine that just forgot it.

npm install -g @tages/cli
Get started