mosaic

tessera — local-first MCP server, Postgres-backed

Your agent doesn't need to be smarter. It needs to stop guessing.

tessera caches your tickets, maps your code, indexes your docs, and remembers your team's decisions — then meters every call so it can prove it paid for itself. One Postgres, one MCP server, every harness.

Rust core · 0BSD · no vendor lock-in · self-host or cloud

01Every session starts cold

Your agent re-reads files it read yesterday, re-fetches issues you already discussed, and re-derives context your team settled months ago. That isn't a model problem — it's a memory problem. You pay for it twice: in tokens, and in answers that miss the decision that was already made.

02How it works

1 · Point it at your world

A tracker (Jira / Redmine / GitHub), your repos, your docs sources. One sync, source refresh, and index — everything lands in Postgres.

2 · Connect your agent

One MCP server. "What do I know about SPS-1234?" or "where does this symbol live?" returns a compact, budgeted answer instead of a directory listing.

3 · Watch the meter

Every call records tokens returned vs. tokens displaced. tessera report savings shows the net as a range — because the honest answer is a range.

# install, sync, index, serve
cargo install tessera
tessera sync --open
tessera index --all
tessera mcp    # stdio MCP for your harness
# what the agent gets instead of a file dump
search_symbols "reaper" → 1 card, 96 tokens
code_workpack "reap_droplets" → card + refs + tests
recall query="pricing" → the decision, not the debate

03What's in the box

Ticket cache

Jira, Redmine, and GitHub (github.com and GHES, including Projects v2 boards) into one canonical model. Incremental syncs, local search, Markdown export, drafts staged for a human to push.

Code atlas

Symbol-level answers: definitions, references, tests, impact. Compact cards and outlines measured at 1.6–302.8× smaller than whole-file reads.

Docs index

Register docs repos; tessera fetches, chunks, and indexes them alongside your code — so "how do I configure X" is a lookup, not a web search.

Team memory

Decisions with lifespans and supersede chains, notes, state documents with compare-and-set writes, drafts only a human can send. Memory that grades itself.

Tool profiles

The default core profile advertises ~1.2 k tokens of schema per session instead of ~2.9 k; set_profile escalates mid-session when the job changes.

Built to be measured

No vanity dashboards: a ledger that costs and credits every call, an honest low/high displacement model, and a report that tells you why — including when the answer is "that call didn't pay for itself."

04We measured it, including the bad news

1.6–302.8× smaller: a symbol lookup (~100 tokens) vs. reading the file it lives in (22.8k–46.5k tokens) on the reference workload.
367,045 → 10,723 tokens: the meter caught code_tree returning 367k to displace 52k — a net cost of ~315k. We fixed it (paged outlines). This is the bad news, kept public.
4,627 → ~1.2k tokens of tool schema per session after the default-profile diet.

All figures from the impact report on the author's own repos — reproduce them on yours with tessera report savings.

05For teams

One central Postgres is the meeting point: tickets, atlas, docs, and memory shared, while every person keeps their own config and secrets. tessera stack scaffolds the docker-compose deployment with TLS, backups, a designated indexer, and tessera diagnose to keep versions in lockstep. Actor attribution records who did what — for audits and learning, never for blame.

the tessera mascot: a small stack of animals

06The atlas, in your browser

Our own repository, indexed by a ~120 KB WebAssembly module, right on the page — no server, no tracking. It's a taste of what the full atlas answers.

Open the live wasm demo

07Cloud — in development

A managed option — hosted MCP endpoint + shared Postgres per team — is in development. The client already ships:

tessera cloud login
tessera cloud connect --api-url https://api.tessera.mosaic-software.dev
tessera cloud status

Want early access or integration help? support@marble.sh

Self-host: free, forever — 0BSD.

  • Open source under 0BSD — no attribution, no fees, no lock-in
  • 50% off for open-source repositories (free as soon as we can afford it)
  • Full data export anytime, including tickets

08FAQ

Is there an option for open source repositories?

Yes — 50% discount for now, and 100% (free) as soon as we can afford it.

Is there an educational discount?

Not now — in the future there will be. Check back soon!

Can I retrieve my data from your server?

Yes. Everything is fully exportable if you want to switch to self-hosting at any time; tessera even makes sure the tickets can be exported with tessera export.

What does it cost to self-host?

Nothing. tessera is 0BSD — no attribution, no fees, no lock-in.