Everything on your Mac, one message away.
Meridian indexes your files into a private vector index and answers questions over Telegram, grounded in your own data.
A private index of everything you own.
Meridian is a self-hosted Retrieval-Augmented Generation backend built on Cloudflare Workers. A local indexer on your Mac chunks your files, embeds them offline, and streams the vectors into a private Vectorize index alongside a relational record in D1.
From there, two different things can read that same index: a Telegram bot for natural-language questions, and mac-orchestrator's own search tool. Neither one owns the data. Meridian just serves it.
Five ways to look, one way to answer.
Every question runs through a durable Cloudflare Workflow, up to seven reasoning steps, before Meridian commits to a final answer.
Semantic search
Finds relevant files by topic or concept, not exact wording.
vectorSearch(query)
File path search
Locates documents by name.
filePathSearch(term)
Keyword search
Finds specific terms inside text.
keywordSearch(term)
Full file read
Reads up to 25 KB for complete context.
fetchFileContent(path)
In-file search
Pinpoints a value inside one large spreadsheet or CSV rather than reading the whole thing.
searchFileContent(path, term)
Final answer
Called once the agent has enough evidence. Answers are never guessed or extrapolated from partial matches.
respond(answer)
Shares a brain with mac-orchestrator.
mac-orchestrator's local indexer writes into Meridian. Meridian serves that same index back out, over Telegram and straight into mac-orchestrator's own tools.
Bring your own Cloudflare account.
No hosted version. Meridian runs on infrastructure only you control.
wrangler secret put: a Telegram bot token, a bearer token for the local indexer's ingest calls, and the one Telegram user ID allowed to query it.
Built for one user.
Every endpoint checks a bearer token before it touches your index.
Ingestion and retrieval both require an authenticated request, and the Telegram bot only answers one authorized user ID. There is no shared or hosted deployment: every install runs on your own Cloudflare account, against your own database.
Secrets are never hardcoded. They live in Cloudflare's secret store or a local, gitignored .devvars file, never in source.