# manimani > Local-first, keyboard-driven triage for mail and messages. Per item you choose only the policy (reply / todo / waiting / done / archive / unsubscribe); the app and its LLM do the labels, archiving, and reply drafts. Every decision appends to an auditable Decision Ledger — locally JSONL + one git commit per decision. manimani.cloud is the externally-published API serving that same ledger at the edge (Cloudflare Worker). manimani.cloud is a JSON API; this landing page is the only HTML. The OSS app runs standalone on a local store — connecting it to the cloud is optional and serves the same ledger multi-device. ## API (deployed route table) - GET /health — liveness probe - GET /inbox — pending items awaiting a decision - PUT /inbox/ — upsert an inbox item (body = item) - POST /decisions — append a triage decision (body = decision) - GET /decisions?since= — the Decision Ledger past a cursor - GET /rules — triage rules - PUT /rules/ — upsert a triage rule (body = rule) - POST /telemetry/install — opt-in anonymous install ping ({"device-id":…,"version":…,"ts":…}) - GET /metrics — read-only conversion aggregation Requests and responses are JSON. Anything else returns a JSON 404. ``` curl https://manimani.cloud/health curl "https://manimani.cloud/decisions?since=0" curl -X POST https://manimani.cloud/decisions -H "content-type: application/json" -d '{"item-id":"msg-123","policy":"reply_llm"}' ``` ## Privacy (local-first, non-negotiable) - Opt-out by default: a stock local install emits no telemetry; the install ping requires explicit opt-in. - Anonymous device-id only: the ping carries a self-generated device-id plus optional version/ts — nothing else. - Never the ledger: the telemetry route persists only device-id/version/ts and drops the rest of the body, so ledger content, message bodies, addresses, or any PII cannot leak into the cloud. ## Status - Interim storage: ledger/inbox/rules live in the Worker's own KV until the kotobase.net PDS surface ships upstream (net-kotobase#153). - Single shared cloud account today; per-user DID signup is a designed seam, not yet built. - Agent inference (cloud-murakumo) is an interface-only seam; no live route calls it. - No pricing, no billing: the paid funnel stays 0 by design until a billing rail exists. - A proposals/reviews event-log surface exists in the JVM-tested portable core but is not yet wired into the deployed Worker. ## Links - OSS app: https://github.com/com-junkawasaki/manimani - Store abstraction: https://github.com/kotoba-lang/kotobase - Live endpoints: https://manimani.cloud/health · https://manimani.cloud/metrics