Skip to main content

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)
  • Python2024-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

niobe-0.2.0.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

niobe-0.2.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

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

Hashes for niobe-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d99d05c995c4d1784b7cec5e264ec44703d133ab4282e4aedea267d7a09a410a
MD5 8bbd53bf473adfb3612e689dff5fcfa5
BLAKE2b-256 5f793e3705f01f52955562ac860177b78c862119aef7727d801818c855671869

See more details on using hashes here.

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

Hashes for niobe-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18d9541015b7b0dab32225bf81e5c2676b4fbd449274b3cce961dd5777c9ca18
MD5 3c2b040c10cbf44c38757415e9b09b91
BLAKE2b-256 d5b2f49008580cfcd64b00be287a4f2c5dc41bc15bef53a02591dabfcb2f575c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page