Skip to main content

arbis

Runtime workflow observation for agent systems.

Arbis instruments SDK boundaries, collects execution events, and infers workflow graphs from observed behavior. It reconstructs what happened during representative executions without requiring manual instrumentation of every call.

Install

pip install arbis

Quick Start

import arbis

# Start observing — instruments OpenAI, Anthropic, Gemini, Bedrock,
# OpenRouter, LiteLLM, LangChain, CrewAI, AutoGen, LlamaIndex, and more.
tracker = arbis.discover()

# ... run your agent code as normal ...

# Stop and get the inferred workflow graph.
tracker.stop()
graph = tracker.graph()
print(f"{len(graph.nodes)} nodes, {len(graph.edges)} edges")

That's it. No decorators required for basic observation — discover() patches supported SDK boundaries automatically.

What Gets Captured

Layer Automatic Explicit API needed
LLM calls (input, output, tokens, tools, thinking) Yes —
Streaming (sync + async) Yes —
Tool call loops (ReAct) Yes —
Agent groups and handoffs Yes —
Multi-agent orchestration topology Yes —
Named workflows / agents — @arbis.workflow, @arbis.agent
Declared handoffs between known agents — arbis.step("handoff", input_data={"from": ..., "to": ...})
Custom tool spans — @arbis.tool, tracker.tool_call(...)
Routing decisions — arbis.route(...)
Human-in-the-loop gates — arbis.human_input(...)

Supported Providers & Frameworks

LLM Providers:

  • OpenAI (Chat Completions, Responses API, Embeddings)
  • OpenAI Agents SDK
  • Anthropic Messages
  • Google Gemini (google.generativeai and google.genai)
  • AWS Bedrock (Converse / Converse Stream)
  • OpenRouter
  • LiteLLM

Orchestration Frameworks:

  • LangChain / LangGraph
  • CrewAI
  • AutoGen
  • LlamaIndex

Transport:

  • httpx and requests (HTTP-level LLM detection and tool execution spans)

Explicit Context API

For richer graphs, add structure with decorators:

import arbis

tracker = arbis.discover()

@arbis.workflow("loan_processing")
def process_loan(application):

    @arbis.agent("underwriter")
    def underwrite():
        # LLM calls here are automatically grouped under this agent
        ...

    @arbis.tool("credit_check")
    def check_credit(applicant_id):
        # Tool execution captured as a first-class span
        ...

    underwrite()
    check_credit(application["id"])

process_loan(app)
tracker.stop()

Persistence

Save workflow runs for later analysis:

# SQLite (default file-based)
tracker = arbis.discover(store="workflows.sqlite")

# JSON directory
tracker = arbis.discover(store="output/", store_backend="json")

# PostgreSQL (requires: pip install 'arbis[postgres]')
tracker = arbis.discover(store="postgresql://user:pass@host/db", store_backend="postgres")

# HTTP ingest to the Arbis backend (minted workflow_id / agent_id on @workflow / @agent)
tracker = arbis.discover(store_backend="http", org_id=ORG_ID, project_id=PROJECT_ID)

See minted-identities.md for attaching dashboard UUIDs and for identity-force-mode ingest warnings.

Export to OpenTelemetry

Mirror runs to OpenTelemetry as traces (the workflow → agent → llm_call → tool span tree, for Jaeger/Tempo/Honeycomb/Datadog) and/or metrics (token usage, latency, call/error/retry counts) — independently of, or alongside, Arbis's own stores. Requires pip install 'arbis[otel]'.

import arbis

# Arbis-owned OTLP export to a collector/Jaeger
tracker = arbis.discover(otel=True, otel_endpoint="localhost:4317")

# Add metrics, and/or plug into your existing OpenTelemetry providers
from opentelemetry import trace, metrics
tracker = arbis.discover(
    otel=True, otel_metrics=True,
    otel_tracer_provider=trace.get_tracer_provider(),
    otel_meter_provider=metrics.get_meter_provider(),
)

Spans follow OTel GenAI semantic conventions plus an arbis.* namespace. See the OpenTelemetry section of the guide for setup, both export modes, and the attribute/metric reference.

Workflow Viewer (TUI)

Browse workflow definitions, run history, and agent topology in the terminal:

pip install textual rich
python -m arbis.viewer

The viewer launches with realistic demo data by default. To connect to a live PostgreSQL store:

# Set connection details
export ARBIS_POSTGRES_DSN="postgresql://user:pass@host/db"
export ARBIS_PROJECT_ID="your-project-uuid"

# Initialize the database (first time only)
psql -d arbis -f scripts/init_db.sql
# Or reset from scratch:
./scripts/reset_db.sh

# Launch
python -m arbis.viewer --store "$ARBIS_POSTGRES_DSN" --project-id "$ARBIS_PROJECT_ID"

Viewer keybindings:

Key Action
Arrow keys Navigate
Enter Select / drill in
Escape Back
d Diff workflow versions
n Rename workflow or agent
l View lineage link suggestions
c Compliance breakdown
r Refresh data
q Quit

Three-pane layout:

  • Left: Workflow definitions (named or auto-discovered)
  • Middle: Run history for the selected workflow
  • Right: Run detail — agent groups, handoffs, tool calls, thinking traces, token usage, and event timeline

Workflow Diffing

Compare how workflows evolve over time:

import arbis

diff_result = arbis.diff(graph_a, graph_b)
# Returns structural fingerprint comparison, agent/tool changes, topology deltas

In the viewer, press d on a workflow with multiple versions to see agent prompt changes, topology edits, and performance deltas.

Optional Dependencies

pip install 'arbis[postgres]'         # PostgreSQL storage backend
pip install 'arbis[otel]'             # OpenTelemetry traces + metrics export
pip install 'arbis[dev]'              # Development & testing
pip install 'arbis[arbis-litellm]'    # LiteLLM support
pip install 'arbis[arbis-frameworks]' # LangChain + AutoGen
pip install 'arbis[arbis-crewai]'     # CrewAI
pip install 'arbis[arbis-llamaindex]' # LlamaIndex
pip install 'arbis[arbis-bedrock]'    # AWS Bedrock
pip install 'arbis[arbis-gemini]'     # Google Gemini SDK

Documentation

All documentation is bundled inside the installed package. After pip install arbis:

from importlib.resources import files

# Get the path to bundled docs
docs = files("arbis") / "docs"

# Read a specific doc
print((docs / "guide.md").read_text())

Bundled docs:

File Contents
docs/SKILL.md Complete API reference — 17 integration patterns covering every public API
docs/guide.md Mental model, automatic vs explicit matrix, SDK coverage
docs/architecture.md Module map, instrumentor details, inference pipeline
docs/overview.md Overview: workflows, tools, supported SDKs/frameworks, and performance
docs/viewer-guide.md TUI viewer usage, PostgreSQL setup, layout and navigation
docs/streaming-runs.md HTTP streaming ingest + arbis.wait
docs/minted-identities.md Minted workflow_id / agent_id, identity force mode, ingest 400s

License

MIT. See LICENSE.

Metadata

Release files for arbis 0.4.6

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

Source distribution (sdist)

Source distribution for arbis 0.4.6
File Size Uploaded Provenance Actions
arbis-0.4.6.tar.gz 246.4 kB With provenance Details for arbis-0.4.6.tar.gz

Built distribution (wheel)

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

Total release size: 532.8 kB

Release files / arbis-0.4.6.tar.gz

Download URL arbis-0.4.6.tar.gz
Size 246.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4256d115631df935fee5c56aaafd3d6811df216f0f2cbc63873a16b75e7a9323
BLAKE2b-256 checksum
How to use checksums
e2a3a63498b39c4181e619064f6a2d8f510beaacf7da8ceed4fd1e513cbb0a6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Release files / arbis-0.4.6-py3-none-any.whl

Download URL arbis-0.4.6-py3-none-any.whl
Size 286.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d80798a3327c9fa68e3175ed313f678fb3ea5cdbd15debaf92dcd672481fa503
BLAKE2b-256 checksum
How to use checksums
91c7271436d5e5d363c5f335f1c5b3ffc9caef1b3e33724cb9d6d8737e734fd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

Security for arbis 0.4.6

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for arbis-0.4.6.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.4.6 This release

2 release files Full provenance

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