Skip to content
samvitgersappaPublic

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ORBIT

ORBIT

Local-first observability, replay & security for LangGraph agents running on Ollama

CI MIT License Python 3.12+ Ollama GitHub Stars

Quick Start · Features · Architecture · CLI · Dashboard · Contributing


I built ORBIT because debugging local LangGraph agents was genuinely painful. When something goes wrong — a hallucinated tool call, a silent failure, a prompt that gets injected — you're left staring at print statements.

ORBIT gives you full visibility into what your agent actually did. Every node, every LLM call, and every tool invocation is timestamped and stored locally. It also scores each run with an ARI (Agent Reliability Index), lets you replay failures step-by-step through a beautiful UI, and even lets you pit models against each other in an Arena.

We also bake in security — scanning every prompt and response for injection or unsafe content — all without sending a single byte of your data to the cloud.

It's built for Apple Silicon + Ollama, but works anywhere Python runs.


Why not LangSmith / Phoenix / etc.?

Nothing wrong with those tools. But they all require an account, send your traces to a server, and cost money at scale. If you're running experiments locally, you probably don't want your prompts leaving your laptop. ORBIT keeps everything in a local SQLite file.


Features

Tracing — wraps any LangGraph agent with a single decorator. Every node execution, tool call, LLM prompt and response gets recorded with timing.

Dynamic Model Loading — Our CLI is smart. If you run a trace without specifying a model, it interactively prompts you to choose one from your local Ollama instance. Don't have it? ORBIT downloads it for you on the fly.

Failure Replay — pick any past run and step through it one event at a time in the dashboard using our interactive Trace Stepper. Useful for understanding exactly where things went sideways.

ARI (Agent Reliability Index) — a 0–100 score per run, weighted across task success, tool accuracy, hallucination, and latency. Gives you a quick gut-check on whether things are improving.

Rigorous Sandbox Testing — ORBIT doesn't just check if your coding agent's python output parses; it injects hidden assertion suites (like edge-cases for Manacher's Algorithm) directly into the execution environment to truly test the LLM's logic.

Agent Arena — run the same task across multiple models and compare results side by side. Good for deciding which model is actually worth using for a given job.

Security Guard — every LLM call is checked for prompt injection (via Little Canary, runs locally) and unsafe content (via Llama Guard 3 through Ollama). Findings are tagged with OWASP LLM Top 10 categories. Screening failures (e.g. the optional little-canary package isn't installed, or Ollama is down) are recorded separately as screening_degraded events so a missed scan is never mistaken for a clean one — and never counted as a security finding.

Dashboard — a React app with 8 pages: Overview, Runs, Failures, Arena, Replay, Models, Analytics, Security. All wired to the local FastAPI backend.


The Arena (Example Run)

Curious how different models perform? Here's an example of an Arena battle we ran between qwen3.5:4b and llama3.2 across three extremely difficult 2026 reasoning tasks (Coding Manacher's Algorithm, Researching Quantization, and RAG).

As you can see, llama3.2 swept the board, claiming a much higher Agent Reliability Index (ARI) due to its insanely fast latency and robust logical structuring!

ORBIT Arena Dashboard


Quick Start

You'll need:

  • macOS (Apple Silicon, tested on M4 with 16 GB RAM)
  • Python 3.12+
  • Node.js 20+
  • Ollama running locally
  • uv
git clone https://github.com/samvitgersappa/Orbit.git
cd Orbit

# base install
uv sync

# optional: enable the Security Guard (Little Canary prompt-injection screening)
uv sync --extra security

# pull the models you want to use
ollama pull llama3.1
ollama pull llama-guard3  # only needed for content-safety scanning
ollama pull qwen2.5:1.5b  # Little Canary's sacrificial canary model

cd frontend && npm install && cd ..

Start everything:

# terminal 1
uv run orbit serve

# terminal 2
cd frontend && npm run dev

# terminal 3 — trace one of the example agents (it will ask you for a model!)
uv run orbit trace src/orbit/examples/coding_agent.py

Open http://localhost:5173.

Or with Docker:

docker compose up

Architecture

graph TB
    subgraph "Agent Layer"
        A["@trace_agent"]
        B["LangGraph Agent"]
        C["OllamaClient"]
    end

    subgraph "Security"
        D["SecurityGuard"]
        E["Little Canary"]
        F["Llama Guard 3"]
    end

    subgraph "Analytics"
        G["ARI Evaluator"]
        H["Failure Detector"]
        I["Arena Engine"]
    end

    subgraph "Storage & API"
        J["SQLite + SQLAlchemy"]
        K["FastAPI"]
    end

    subgraph "UI"
        L["React Dashboard"]
        M["CLI (Typer)"]
    end

    B --> A
    A --> C
    A --> D
    D --> E
    D --> F
    A --> J
    J --> G
    J --> H
    J --> I
    J --> K
    K --> L
    K --> M
Loading

More detail in docs/architecture.md.


CLI

orbit serve                                       # start the backend
orbit trace <path>                                # run + trace an agent script
orbit replay <run_id>                             # step through a run in the terminal
orbit battle --task "..." --models llama3.1 qwen2.5  # compare models
orbit report <run_id>                             # ARI breakdown + failure summary
orbit runs                                        # list recent runs
orbit models                                      # show available Ollama models
orbit security <run_id>                           # security events for a run
orbit security-summary                            # OWASP stats across all runs

Dashboard

Page What's there
Overview run counts, avg ARI, success rate, security alert count
Runs table of all runs, click through for traces and scores
Failures grouped by failure type with root cause and recommendation
Arena model leaderboard and match history
Replay pick a run, scrub through steps, see content at each step
Models live list from Ollama
Analytics latency trends, runs per model
Security OWASP category chart, full event log

Tech stack

Backend Python 3.12, FastAPI, SQLAlchemy 2.0 async, SQLite, aiosqlite
Frontend React 19, TypeScript, Vite, Tailwind CSS, shadcn/ui, Recharts
Agents LangGraph, Ollama
Security Little Canary, Llama Guard 3
CLI Typer
Tooling uv, ruff, mypy, pytest, Docker, GitHub Actions

Contributing

The codebase is straightforward Python + React. If you want to hack on it:

git clone https://github.com/<your-username>/Orbit.git
cd Orbit
uv sync
cd frontend && npm install && cd ..

uv run pytest
uv run ruff check src/
uv run mypy src/

Things that still need work:

  • more failure detectors (hallucinated tool calls, infinite loops, low-confidence answers)
  • PII detection in the security module
  • live replay mode (--live flag to actually re-execute steps)
  • CrewAI / AutoGen support

Open an issue before starting anything large — good to make sure we're not duplicating effort. PRs against main are fine for small fixes.

See CONTRIBUTING.md for the full guide.


License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages