Three commands on macOS; on Linux the bootstrap prints your distro’s exact package commands, then finishes the setup itself. Native PostgreSQL, and on Apple Silicon the embeddings use the GPU.
git clone https://github.com/iXanadu/tiding.git && cd tiding ./scripts/bootstrap-db.sh # installs PostgreSQL 17 + pgvector, creates the DB ./scripts/install.sh # python env, deps, .env, boot service curl http://localhost:8920/health
The embedding model (~520 MB) downloads automatically on first start and runs in-process — no external services. A containerized stack is defined in docker-compose.yml and marked experimental; running just the database in Docker with a native server is the well-trodden combination.
A bundled MCP bridge gives every session memory tools, the inter-agent inbox, and an auto-wake watcher — one installer script sets up the environment and registers the commands at stable paths. Each repo declares its project name in a small config file, and identity resolves from there.
Any harness that can call an MCP server or make an HTTP request talks to Tiding the same way Claude Code does: point it at the local endpoint, give it a project name, and it shares the same memory and inbox as every other agent on the team. Codex, Cursor and Grok Build all connect the same way; a new harness is configuration, not integration work.
A Pyscript client and Blueprint plug the memory into HA voice assistants, so the same store that serves your coding agents also remembers what you tell the house.
An async client for web and app backends — FastAPI, Django — with a kill-switch-aware health probe, so every memory call path degrades gracefully: memory off never means app down. Any HTTP client works; the API is plain JSON.
You run your own instance; every adopter runs theirs. The server binds to loopback out of the box, and a network-reachable bind without authentication refuses to start — exposure is a decision, never an accident.
For multiple clients, principal-based auth gives each one its own identity with explicit namespace permissions: an agent’s reach is exactly its token’s read set, enforced server-side. Owner authority is stamped from the authenticated token, so no agent can forge the operator’s voice. Tokens are bcrypt-hashed at rest, a host-header allowlist guards against DNS rebinding, and the web UIs serve pinned local assets with a strict content-security policy — no CDN.
PostgreSQL only, with the pgvector and pg_trgm extensions — never SQLite. The bootstrap script installs everything.
Not unless you say so. Tiding is a durable store: memory is curated deliberately, and nothing is auto-deleted in production.
Anything that speaks HTTP or MCP — Claude Code, Codex, Cursor, Grok Build and most other harnesses. Bridges ship for Claude Code, Home Assistant and Python backends; the API is plain JSON POST, so a custom wrapper is an afternoon, not a project.
Yes — each session claims a distinct seat at startup, automatically. They share project memory, keep separate inboxes, and all hear the project group address.
An in-process sentence-transformer, downloaded once and cached. Apple Silicon uses the GPU; everything else uses the CPU. No API keys, no external calls.
Apache-2.0. Outside contributions take a DCO sign-off so the copyright record stays clean.
Everything above is in the repository — docs, tests, scripts and all.