Skip to main content

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

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 MCP Suite

Niobe solves AI Blindness #2: Runtime Behavior — CPU, memory, error rates, and log patterns that no model can observe from code alone.

Part of the EvoIntel MCP Suite by Evolving Intelligence AI: five tools for five blindnesses no model improvement will ever fix.

Tool Blindness Install
Sentinel Project History pip install git-sentinel
Niobe Runtime Behavior pip install niobe
Merovingian Cross-Service Dependencies pip install merovingian
Seraph Code Quality pip install seraph-ai
Anno Web Content npm install -g @evointel/anno

License

MIT

Metadata

Release files for niobe 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for niobe 0.2.1
File Size Uploaded Provenance
niobe-0.2.1.tar.gz 31.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for niobe 0.2.1
File Interpreter ABI Platform
niobe-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 60.2 kB

Release files / niobe-0.2.1.tar.gz

Download URL niobe-0.2.1.tar.gz
Size 31.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d62488cbc95995dbd58bfd18f1ba07abfd371ba5d8eb242d6759b0324c98c721
BLAKE2b-256 checksum
How to use checksums
b51edb7b5b07685f106005619793ddf5322b770ae431bf5090e07c1575cc2bed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / niobe-0.2.1-py3-none-any.whl

Download URL niobe-0.2.1-py3-none-any.whl
Size 28.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fd9d165d0549228fddfd111d7652f80e8f7b421f2e1398cc50c561335b5129a6
BLAKE2b-256 checksum
How to use checksums
3beb56cf5e02a964b6ef54f8c7776dcc2e6fd5c54d306d2de4b9d58d1703d021
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for niobe 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page