hover a node — its consumers light up
Celmis — a self-hosted platform that takes a production alert through to a fixed pull request
From the alert to the fixed pull request.
Your monitoring already told you. This is what happens next — self-hosted, open source, on one machine.
What is Celmis?
An alert arrives from a service you run. Celmis already knows which repository that service is and who owns it, so the fix starts there: an embedded Claude Code session — on your subscription, inside your installation — edits the code, and the runner opens a pull request. On one measured finding that took 220 seconds, from a phone or a laptop, whichever the alert reached first.
Celmis does not watch your services; Grafana or whatever you already run does that, and it is good at it. This is the part that comes after the alert — the walk from a firing rule to a diff someone can review.
To be exact, because the line is easy to blur. The application
itself ingests no logs — it starts from the alert. But the repository ships an
optional observability overlay: one extra compose file brings up
Prometheus, Loki, Promtail and Grafana, and Promtail then tails
every container on that host — all thirty of them, if you run thirty —
into a Loki you own, browsable in the bundled Grafana and filterable by container.
Platform-wide, not Celmis-only. Every port binds to 127.0.0.1 and is
reached over an SSH tunnel, because a log store strangers can write to is not a log
store.
Fix from here is the name of that step. It starts from a production alert or from a dependency finding, opens an embedded Claude Code session pre-filled with the repository, the package, both versions and the boundaries of the job, and runs it on your Anthropic subscription inside your installation. The session edits the checkout; the Celmis runner commits, pushes a branch and opens a pull request. A human reviews and merges — it opens a pull request, it does not merge one.
In the oldest telling, Kelmis was the smelter — one of three who found how to work iron with fire. The index does the reducing here; the surfaces are what work the result.
Why the loop closes
One index underneath, so the platform knows whose code it is
An alert can be routed to an owner, and a fix can be scoped, only because something already read the code. Celmis builds a symbol graph from your repositories once; every surface above reads that one index. Here it answers a question spanning two repositories — tracing the call chain, then noticing, unprompted, that the Kafka topic name is hardcoded in both and that changing one silently breaks the other.
A reviewer that reads only the diff structurally cannot say that. It never had the other repository open.
Eight things people do with it
Index once, then read it from whichever side of the work you are standing on
The alert arrives knowing which repository it belongs to and who owns it. Fix from here takes it from there on your own subscription, and the runner opens a pull request — from whatever device you read it on. alerts and fixing
Ask it. From any device, anywhere, without booking time from an engineer and without a meeting whose only output is a paragraph. ask the code
Every one of those pulls someone experienced out of flow, at the
moment they are already covering. The codebase answers instead, with
file:line citations.
ask the code
Load it, grant the right to ask, and deny the paths that must stay private. They get answers; the credentials are refused at the source. access rules
One button, CycloneDX, plus an evidence pack whose manifest they recompute themselves — against a hash you publish where the pack is not. dependencies and evidence
Fix from here hands an embedded session the repository, the package and the finding. It edits, the runner pushes a branch and opens a pull request — on your own Claude subscription, running on your own machine, so the fix can start from a laptop or a phone. fix it from here
Agents read the diff — and, where the graph is built, who else calls what is being changed, including from another repository. pull-request review
Point it at /mcp/. Twenty-three tools over the same index,
under the same access rules — no second copy of your code anywhere.
mcp server
The first three are the ones a code-review tool does not do at all, and they are the reason this is a platform rather than a reviewer.
Three numbers
Including the one that does not flatter us
git clone to six
healthy services, measured on a clean serverThat last one is deliberately unflattering, and it stays. It measures one of the surfaces above — pull-request review on isolated single-repository pull requests — and that set has no sibling service for a symbol to have consumers in. The thing this product is built around is not in the number at all.
The table, an audit of every finding it scored false, and the command that reproduces both are in the repository. Of the 79 findings the benchmark counted against us, 33 turned out to be real defects the gold set was silent about.
The other surfaces
Same index, read four more ways
pip install celmis, then
celmis verify pack.zip --manifest-sha256 <hex>, on any Python
from 3.9 and on a machine that has never run Celmis. Celmis does not claim regulatory compliance on your behalf,
and says so in its own output.
Writing
Things worth reading once
-
Introducing Celmis →
Self-hosted code intelligence over a symbol graph: what it does, what it refuses to claim, and how to run it on one machine. Start here.
27 August 2026 -
What the Cyber Resilience Act asks for on 11 September →
The reporting clock starts in 2026; the bill of materials is not mandated until 2027. Most preparation advice has those two the wrong way round — and the second is a prerequisite for the first.
27 August 2026
Quick start
Docker, a model key, and about four gigabytes of RAM
Postgres and Qdrant are bundled — there is no external cluster to provision, and no Python or Node.js install needed for the Docker flow. A free Gemini key is enough to evaluate.
# clone, then generate every secret in the format it needs git clone https://github.com/Celmis-labs/Celmis.git celmis cd celmis ./scripts/init-env.sh # first boot pulls three images and applies migrations docker compose --env-file .env up -d docker compose ps
- Bring your own modelGoogle Gemini, Anthropic, OpenAI, OpenRouter, Groq or Mistral — whichever you already pay for.
- Keys go in through the interfaceNot into a file you might commit, and not into an image you might push.
- Nothing phones homeThe only outbound calls are the ones you configure. No telemetry, no licence check.