sensorium
Observability for agents: OpenTelemetry in, MCP out.
What it is
sensorium keeps the logs, traces and metrics of many services in one Postgres store and serves them to agents over MCP. There is no dashboard: the reader is an agent doing maintenance or analysis. It is open source under the MIT License.
What it does
- Ingest
- OpenTelemetry over HTTP, as JSON or protobuf, at
/v1/logs,/v1/tracesand/v1/metrics. - Projects
- Each project has its own ingest token, and the token decides where its records land.
- MCP
- Eight read-only tools at
/mcp:list_projects,query_logs,query_traces,list_traces,error_summary,top_sources,query_metricsandsearch. - Retention
- Metrics for 14 days, spans and logs for 30, by default.
Deploy
On any machine with Docker, fetch the compose file and the env example. Set
POSTGRES_PASSWORDandSENSORIUM_MCP_TOKENin.env.curl -fsSLO https://raw.githubusercontent.com/zyx1121/sensorium/main/compose.yaml curl -fsSL -o .env https://raw.githubusercontent.com/zyx1121/sensorium/main/.env.exampleStart it. The receiver on port 8787, the MCP endpoint on port 8788 and a daily retention sweep come up from one image, beside Postgres.
docker compose up -dPut a reverse proxy with TLS in front, and route
/mcpto port 8788 and everything else to port 8787. Both ports listen on 127.0.0.1, and tokens travel in the Authorization header.
Use
Register a project. The token is printed once, and running it again for the same name rotates it.
docker compose run --rm ingest register-project my-servicePoint the service's OpenTelemetry exporter at sensorium. sensorium takes neither gzip nor gRPC. For an exporter that only speaks those, put an OpenTelemetry Collector in front and set
compression: noneon its otlphttp exporter.OTEL_EXPORTER_OTLP_ENDPOINT=https://sensorium.example.com OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer%20<ingest token>Connect an agent to the MCP endpoint.
claude mcp add --transport http sensorium https://sensorium.example.com/mcp \ --header "Authorization: Bearer <SENSORIUM_MCP_TOKEN>"Ask it what broke.
error_summaryandtop_sourcesare the usual first calls.
Configure
Every setting is an environment variable in .env. POSTGRES_PASSWORD and SENSORIUM_MCP_TOKEN are required, and the SENSORIUM_RETENTION_*_DAYS keys set how long data stays. .env.example documents every key.