Caliu's server is deliberately small. Your devices do most of the work, so the server has a short list of jobs: keep a copy of your notes, pass changes between your devices, and answer the tools you connect.
Built on Cloudflare Workers
The server is written in TypeScript and runs on Cloudflare Workers. Instead of living on one machine in one country, the code runs in Cloudflare's data centres around the world, and each request is answered by one close to you. There are no servers to patch and nothing sits idle waiting for traffic.
It leans on a few Cloudflare building blocks, each with one job:
| Piece | What it does for Caliu |
|---|---|
| D1 | The database (SQLite) holding your notes, tags, and the change log that sync reads |
| R2 | Storage for the images and files you attach |
| Durable Objects | Small, long-lived helpers, such as one for each AI tool session |
| KV | A fast key-value store for short-lived data, such as sign-in checks |
One API for everything
The apps, the public API, and the MCP server for AI tools all go through the same API, with the same rules and the same permission checks. There is no private back door for the apps. If you can do something in Caliu, the API does it the same way, which is also why the API documentation at caliuapp.com/docs describes exactly what the apps use.
AI tools that connect over MCP never see your password. You approve them on a consent screen, each gets its own key, and you can revoke it at any time under Connected apps.
Housekeeping
A few scheduled jobs keep things tidy:
- Every hour, tags that no longer have any notes are cleared away.
- Every night, notes that have been in the trash for 30 days are deleted for good, and devices that have not been used for 90 days are signed out.
Each of these changes is written to the change log, so your devices hear about it on their next sync.
Even this help center
The articles you are reading are written as Markdown files, built into the server, and sent to the apps, which keep a copy so help works offline too.