Runtime intelligence for AI agents — local-first runtime observation via MCP
Project description
Niobe
Runtime intelligence for AI agents — local-first runtime observation via MCP.
Niobe answers: "What is the system doing right now, and did my change make it worse?"
Take snapshot A → deploy → snapshot B → diff. That's it.
Install
pip install niobe
With MCP server support:
pip install niobe[mcp]
Quick Start
# Register a service
niobe register myapp --port 8080 --log /var/log/myapp.log
# Take a snapshot (captures metrics + ingests logs)
niobe snapshot myapp
# Make a change, then snapshot again
niobe snapshot myapp
# Compare before/after
niobe compare <snapshot-id-1> <snapshot-id-2>
# Search logs
niobe logs --query "connection refused"
# View recent errors
niobe errors --service myapp --since 10
CLI Reference
| Command | Description |
|---|---|
niobe register <name> [--pid N] [--port N] [--log PATH...] |
Register a service for observation |
niobe unregister <name> |
Remove a service |
niobe services |
List registered services |
niobe snapshot [service] |
Take health snapshot (one or all) |
niobe compare <id_a> <id_b> |
Diff two snapshots |
niobe logs [--query Q] [--service S] [--level L] |
Search log entries |
niobe errors [--service S] [--since N] |
Recent errors |
niobe ingest <service> [--follow] |
Ingest log files |
MCP Tools
Niobe exposes 5 tools via Model Context Protocol:
| Tool | Description |
|---|---|
niobe_register |
Register a service for observation |
niobe_snapshot |
Take health snapshot (one or all services) |
niobe_compare |
Compare two snapshots (before/after diff) |
niobe_errors |
Get recent errors from logs |
niobe_logs |
Full-text search across ingested logs |
Claude Code Integration
Add to ~/.claude/.mcp.json:
{
"mcpServers": {
"niobe": {
"command": "niobe-mcp",
"args": []
}
}
}
Then in Claude Code:
- "Register my web server on port 3000" →
niobe_register - "How's my app doing?" →
niobe_snapshot - "Did my last deploy break anything?" →
niobe_compare - "Show me recent errors" →
niobe_errors - "Search logs for timeout" →
niobe_logs
Log Format Support
Niobe auto-detects log formats:
- JSON —
{"level": "error", "message": "...", "timestamp": "..."} - CLF — Apache/NGINX common log format (HTTP status mapped to levels)
- Python —
2024-01-15 10:30:45,123 - myapp - ERROR - message - RAW — Everything else (stored as-is with level=unknown)
Configuration
Optional. Create .niobe/config.toml in your project root:
[store]
db_name = "niobe.db"
[ingestion]
tail_lines = 100
max_line_length = 8192
[snapshot]
error_window_minutes = 5
cpu_sample_interval = 0.5
[mcp]
default_error_since_minutes = 5
default_query_limit = 50
All values can be overridden with NIOBE_* environment variables.
Architecture
- SQLite + WAL — single-file store, concurrent-read safe
- FTS5 — full-text search across log messages with porter stemming
- psutil — process metrics (CPU, memory, threads, connections)
- Frozen dataclasses — immutable models, no Pydantic dependency
- Snapshot-based — no background monitoring, entirely on-demand
Part of the EvoIntel Stack
Niobe is Phase 2, after Seraph, Sentinel, and Anno.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file niobe-0.2.0.tar.gz.
File metadata
- Download URL: niobe-0.2.0.tar.gz
- Upload date:
- Size: 31.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d99d05c995c4d1784b7cec5e264ec44703d133ab4282e4aedea267d7a09a410a
|
|
| MD5 |
8bbd53bf473adfb3612e689dff5fcfa5
|
|
| BLAKE2b-256 |
5f793e3705f01f52955562ac860177b78c862119aef7727d801818c855671869
|
File details
Details for the file niobe-0.2.0-py3-none-any.whl.
File metadata
- Download URL: niobe-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18d9541015b7b0dab32225bf81e5c2676b4fbd449274b3cce961dd5777c9ca18
|
|
| MD5 |
3c2b040c10cbf44c38757415e9b09b91
|
|
| BLAKE2b-256 |
d5b2f49008580cfcd64b00be287a4f2c5dc41bc15bef53a02591dabfcb2f575c
|