{"id":51193135,"url":"https://github.com/rajudandigam/agent-inspect","last_synced_at":"2026-06-27T18:00:26.081Z","repository":{"id":355166082,"uuid":"1227043167","full_name":"rajudandigam/agent-inspect","owner":"rajudandigam","description":"Local execution trees for TypeScript AI agents.  agent-inspect helps you understand what happened inside an AI agent run — locally. It turns manual steps, tool calls, LLM calls, structured logs, failures, durations, and run metadata into readable execution trees you can inspect from the terminal.  It is built for TypeScript/Node.js developers..","archived":false,"fork":false,"pushed_at":"2026-06-23T23:58:42.000Z","size":2185,"stargazers_count":96,"open_issues_count":18,"forks_count":82,"subscribers_count":72,"default_branch":"main","last_synced_at":"2026-06-24T00:21:55.008Z","etag":null,"topics":["agent-observability","agentic-ai","ai","ai-agent","ai-debugging","ai-logging-library","ai-observability","ai-systems","braintrust","langfuse","langsmith","local-logging","logging","multi-agent","no-cloud","no-cost","observability","opentelemetry","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/agent-inspect","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajudandigam.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-02T06:07:29.000Z","updated_at":"2026-06-23T23:58:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rajudandigam/agent-inspect","commit_stats":null,"previous_names":["rajudandigam/agent-inspect"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/rajudandigam/agent-inspect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajudandigam%2Fagent-inspect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajudandigam%2Fagent-inspect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajudandigam%2Fagent-inspect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajudandigam%2Fagent-inspect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajudandigam","download_url":"https://codeload.github.com/rajudandigam/agent-inspect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajudandigam%2Fagent-inspect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34862627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-observability","agentic-ai","ai","ai-agent","ai-debugging","ai-logging-library","ai-observability","ai-systems","braintrust","langfuse","langsmith","local-logging","logging","multi-agent","no-cloud","no-cost","observability","opentelemetry","typescript"],"created_at":"2026-06-27T18:00:16.712Z","updated_at":"2026-06-27T18:00:26.073Z","avatar_url":"https://github.com/rajudandigam.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agent-inspect\n\n**Trace, check, and safely share TypeScript AI agent runs locally.**\n\nagent-inspect helps you understand what happened inside an AI agent run without sending traces to a hosted service. It turns framework events, observed objects/classes, manual steps, tool calls, LLM calls, structured logs, failures, durations, and run metadata into readable local execution trees.\n\nIt is built for TypeScript/Node.js developers and teams shipping real agentic products — not just toy demos. Use it for **local TypeScript agent debugging**, **eval iteration**, and **CI trace artifacts**. It **complements** production observability platforms; it does **not** replace them.\n\nThe default loop is local-first: capture a trace, inspect/report/diff it, run deterministic checks in CI, then export a redacted copy only when you choose to share.\n\n**No account. No cloud upload. No dashboard required.**\n\n**Visual demos:** [docs/SCREENSHOTS.md](docs/SCREENSHOTS.md) — curated terminal recordings (synthetic fixtures only).\n\n## Why agent-inspect exists\n\nAI agents are no longer single function calls. They plan, call tools, invoke LLMs, branch, retry, fail, and run work in parallel. **Console logs are flat**; reconstructing causality from a wall of lines is slow and error-prone.\n\n**Hosted observability** is valuable in production, but it can be heavy for the **inner loop**: local runs, fast iteration, and debugging before anything reaches a collector or dashboard.\n\nagent-inspect gives those runs **structure**: an **execution tree** you can read and diff on disk, with a **CLI-first** workflow and **no vendor lock-in**.\n\n## Install\n\nCurrent npm release line: **1.9.x** for the existing public packages. The v2 contract work on `main` is unreleased until the release-readiness gate completes. `@agent-inspect/openai-agents` v1.9 publication recovery is a separate maintainer npm setup item and is not retried by the v2 train.\n\n```bash\nnpm install agent-inspect\n```\n\n```bash\npnpm add agent-inspect\n```\n\nVerify the CLI is available:\n\n```bash\nnpx agent-inspect --help\n```\n\nFor a clean npm/pnpm install checklist with ESM, CJS, and CLI checks, see [Clean install smoke test](docs/INSTALL-SMOKE-TEST.md).\n\n## Three adoption paths\n\nAlready using AI SDK, OpenAI Agents JS, LangChain, or LangGraph-through-LangChain? Start with **Path B** for framework-native local traces before adding manual instrumentation.\n\n### Path A — Observe an existing object/class\n\nUse `observe()` when you already have an agent-like object with a `run`, `execute`, or `invoke` method.\n\nCreate `demo.mjs`:\n\n```js\nimport { observe } from \"agent-inspect\";\n\nclass SupportAgent {\n  async run(input) {\n    return {\n      answer: `Answering: ${input.question}`,\n    };\n  }\n}\n\nconst agent = observe(new SupportAgent(), {\n  traceDir: \"./.agent-inspect\",\n});\n\nawait agent.run({\n  question: \"How do refunds work?\",\n});\n```\n\nRun it, then inspect the trace:\n\n```bash\nnode demo.mjs\nnpx agent-inspect list --dir ./.agent-inspect\nnpx agent-inspect view \u003crun-id\u003e --dir ./.agent-inspect\n```\n\n### Path B — Use a framework adapter\n\nOptional adapters keep framework dependencies out of the root package and write local traces only when configured.\n\nAI SDK local telemetry:\n\n```ts\nimport { generateText } from \"ai\";\nimport { agentInspect } from \"@agent-inspect/ai-sdk\";\n\nawait generateText({\n  model,\n  prompt,\n  experimental_telemetry: {\n    isEnabled: true,\n    recordInputs: false,\n    recordOutputs: false,\n    integrations: [\n      agentInspect({\n        traceDir: \"./.agent-inspect\",\n        runName: \"support-agent\",\n        capture: \"metadata-only\",\n      }),\n    ],\n  },\n});\n```\n\nOpenAI Agents local-only processor:\n\n```ts\nimport { setTraceProcessors } from \"@openai/agents\";\nimport { agentInspectProcessor } from \"@agent-inspect/openai-agents\";\n\nsetTraceProcessors([\n  agentInspectProcessor({\n    traceDir: \"./.agent-inspect\",\n    workflowName: \"support-agent\",\n    capture: \"metadata-only\",\n  }),\n]);\n```\n\nLangChain callback adapter:\n\n```ts\nimport { AgentInspectCallback } from \"@agent-inspect/langchain\";\n\nconst callback = new AgentInspectCallback({\n  runName: \"support-agent\",\n  traceDir: \"./.agent-inspect\",\n  persist: true,\n  capture: \"metadata-only\",\n});\n\nawait agent.invoke(input, { callbacks: [callback] });\n```\n\nSee [docs/ADAPTERS.md](docs/ADAPTERS.md).\n\nNo-network recipes: [ai-sdk-local-telemetry](examples/recipes/ai-sdk-local-telemetry/), [openai-agents-local-tracing](examples/recipes/openai-agents-local-tracing/), and [langgraph-callback-local](examples/recipes/langgraph-callback-local/).\n\n### Path C — Manually instrument custom flows\n\nUse `inspectRun` and `step` when you want explicit names, custom nesting, or flows that are not object/class shaped.\n\n```js\nimport { inspectRun, step } from \"agent-inspect\";\n\nconst delay = (ms) =\u003e new Promise((resolve) =\u003e setTimeout(resolve, ms));\n\nawait inspectRun(\n  \"support-agent\",\n  async () =\u003e {\n    const plan = await step(\"plan\", async () =\u003e {\n      await delay(40);\n      return { intent: \"refund-policy\", needsPolicy: true };\n    });\n\n    const policy = await step.tool(\"retrieve-policy\", async () =\u003e {\n      await delay(60);\n      return { text: \"Refunds are available within 30 days of purchase.\" };\n    });\n\n    return step.llm(\"generate-answer\", async () =\u003e {\n      await delay(80);\n      return `Policy: ${policy.text} (intent: ${plan.intent})`;\n    });\n  },\n  { traceDir: \"./.agent-inspect\" }\n);\n```\n\nFull flow:\n\n```bash\nnpm install agent-inspect\nnode demo.mjs\nnpx agent-inspect list --dir ./.agent-inspect\n```\n\n**Simplified example output** (actual CLI formatting may differ slightly):\n\n```text\nsupport-agent\n✔ plan\n✔ tool:retrieve-policy\n✔ llm:generate-answer\n```\n\nA runnable copy lives in [examples/00-quickstart-demo](examples/00-quickstart-demo/README.md).\n\nUse the root import for stable beginner APIs:\n\n```ts\nimport {\n  createInspector,\n  observe,\n  inspectRun,\n  maybeInspectRun,\n  step,\n  getCurrentCorrelationMetadata,\n} from \"agent-inspect\";\n```\n\nUse subpaths for advanced, experimental, or lower-level workflows:\n\n```ts\nimport { openTrace } from \"agent-inspect/readers\";\nimport { memoryWriter } from \"agent-inspect/writers\";\nimport { runTraceChecks } from \"agent-inspect/checks\";\nimport { diffTraceEvents } from \"agent-inspect/diff\";\nimport { exportMarkdown } from \"agent-inspect/exporters\";\nimport { parseLogsToTrees } from \"agent-inspect/logs\";\nimport { traceEventsToPersistedInspectEvents } from \"agent-inspect/persisted\";\nimport { createInspectorRuntime } from \"agent-inspect/advanced\";\n```\n\n**Env-gated tracing** (eval harnesses, CI): use `maybeInspectRun` and set `AGENT_INSPECT=1` when you want a trace — otherwise no files are written.\n\n```ts\nimport { maybeInspectRun } from \"agent-inspect\";\n\nawait maybeInspectRun(\"eval-case-42\", async () =\u003e runAgent());\n```\n\n```bash\nAGENT_INSPECT=1 node eval-runner.mjs\n```\n\n## What you can do today\n\n- **Trace manually** with `inspectRun`, `step`, `step.llm`, `step.tool`, and `observe` — local JSONL under `.agent-inspect/` by default.\n- **Toggle tracing** with `maybeInspectRun` and `AGENT_INSPECT=1` in eval harnesses or CI.\n- **Use an isolated inspector** with `createInspector()` and explicit local writers for tests/adapters.\n- **Correlate runs** with optional `correlationId`, `requestId`, `decisionId`, and `groupId` on `run_started` metadata.\n- **Redact before disk** with default key-based redaction, or choose `redactionProfile`: `local`, `share`, or `strict`.\n- **Inspect from the CLI** — `list`, `view`, `clean`, `logs`, `tail`, `export`, `open`, `migrate`, `diff`, `timeline`, `stats`, `search`, `what`, `report`.\n- **Migrate explicitly** with `agent-inspect migrate \u003ctrace.jsonl\u003e --to 1.0 --dry-run` or `--output \u003cfile\u003e`; originals are never overwritten by default.\n- **Export share-safe copies** — `export --redaction-profile share` (or `strict`) writes local Markdown/HTML/OpenInference/OTLP JSON only.\n- **Parse structured logs** you already emit (JSON first-class; log4js best-effort).\n- **Optional LangChain adapter** — metadata-only by default; optional `persist: true` and `stream: true` streaming metadata (no full token capture by default).\n- **Optional AI SDK adapter** — experimental `@agent-inspect/ai-sdk` telemetry integration for AI SDK v6; metadata-only by default with `recordInputs: false` and `recordOutputs: false`.\n- **Optional OpenAI Agents adapter** — experimental `@agent-inspect/openai-agents` trace processor for local OpenAI Agents JS trace processing.\n- **Optional TUI** — `view --tui` when `@agent-inspect/tui` is installed.\n- **Persisted-event foundation** — v0.1/v0.2/v1.0 AgentInspect JSONL remains readable; `createInspector()` and built-in writers use the schema 1.0 persisted path.\n- **Experimental subpaths** — `agent-inspect/readers`, `/writers`, `/checks`, `/diff`, `/exporters`, `/logs`, `/persisted`, and `/advanced` for advanced local workflows.\n\nNothing uploads traces by default. Review exports before sharing — see [safe trace sharing](docs/SAFE-TRACE-SHARING.md).\n\n## What the trace shows\n\nEach run produces a **JSONL** trace: `run_started` / `run_completed`, `step_started` / `step_completed`, with **nested steps**, **tool/LLM** types where you use `step.tool` / `step.llm`, and **durations** on completed steps. Failures are recorded on `step_completed` with `status: \"error\"` (there is no separate `step_failed` event). See [docs/SCHEMA.md](docs/SCHEMA.md).\n\n![Nested execution tree from a local JSONL trace](https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/demos/execution-tree.gif)\n\n*Synthetic demo — [examples/02-nested-steps](examples/02-nested-steps/README.md). More visuals: [SCREENSHOTS.md](docs/SCREENSHOTS.md).*\n\n## Advanced ingestion: use this when your app already emits structured logs\n\nMany production systems already emit **line-delimited JSON** or text logs with embedded JSON (e.g. via **pino**, **winston**, **log4js**, **NestJS** loggers, job runners, or custom event streams). agent-inspect can turn those into **local grouped timelines/trees** without wrapping every function.\n\n```bash\nnpx agent-inspect logs ./agent.log \\\n  --format json \\\n  --run-id-key requestId \\\n  --event-key event \\\n  --timestamp-key timestamp\n```\n\nWith a reusable ingest config:\n\n```bash\nnpx agent-inspect logs ./agent.log --config agent-inspect.logs.json\n```\n\n- **JSON logs** are first-class.\n- **log4js-style** lines are **best-effort** when a recoverable JSON payload is present.\n- **No `eval`**, no JavaScript object-literal parsing as a log interchange format.\n- **Flat timeline by default**; nesting when parent relationships are explicit or configured.\n- **Confidence labels** (`explicit`, `correlated`, `heuristic`, `unknown`) describe how attribution was inferred.\n\n**Visual:** JSON log → tree recording is [documented in SCREENSHOTS.md](docs/SCREENSHOTS.md#json-logs--tree) (re-record pending; command above is the canonical flow).\n\nMore detail: [docs/LOGS.md](docs/LOGS.md) · [docs/LOG-TO-TREE-QUICKSTART.md](docs/LOG-TO-TREE-QUICKSTART.md) · [docs/LOGGING-PLAYBOOK.md](docs/LOGGING-PLAYBOOK.md) (pino, log4js, NestJS).\n\n## CLI at a glance\n\n| Command | Use it for |\n| -------- | ---------- |\n| `list` | Find recent runs |\n| `view` | Inspect one run as a tree |\n| `clean` | Safely remove old trace files |\n| `logs` | Turn existing structured logs into a local tree/timeline |\n| `tail` | Watch structured logs while the app runs |\n| `export` | Write Markdown / HTML / OpenInference-compatible JSON / OTLP JSON **locally** |\n| `open` | Read AgentInspect JSONL, OpenInference JSON, or OTLP JSON locally |\n| `migrate` | Convert a local AgentInspect JSONL file to schema 1.0 with dry-run or explicit output |\n| `diff` | Compare two local runs (read-only) |\n| `timeline` | Chronological view of one run |\n| `stats` | Local aggregates over a trace directory |\n| `search` | Deterministic search over local traces |\n| `what` | Concise summary of one run |\n| `report` | Markdown/HTML inspection report (what + timeline + tree) |\n| `check` / `scan` / `verify-safe` | Deterministic local trace checks and best-effort safety verification |\n| `artifacts` | Safe local CI artifact bundles and optional step-summary file output |\n\n![Timeline with slow-step focus for one run](https://raw.githubusercontent.com/rajudandigam/agent-inspect/main/docs/assets/demos/timeline.gif)\n\n*Synthetic demo — `agent-inspect timeline` on [fixtures/traces](fixtures/traces). Gallery: [SCREENSHOTS.md](docs/SCREENSHOTS.md).*\n\nFull flags and behavior: [docs/CLI.md](docs/CLI.md).\n\n## Real-world workflows\n\n- Debug a **failed tool call** or thrown error in a support or ops agent.\n- See **which step dominated latency** in a multi-step planner or RAG pipeline.\n- **Diff two runs** after a prompt, model, or routing change (see [diff examples](docs/DIFF.md)).\n- Point **`logs`** / **`tail`** at existing job or service logs to get a **local execution view** without shipping data upstream.\n- **Export** a run to Markdown for a PR, postmortem, or internal thread — use `--redaction-profile share` for share-safe copies, then review before sharing.\n- Keep traces **on disk** while still using enterprise observability elsewhere.\n\n## Stable foundation\n\nAgentInspect is the **local-first trace workbench** for TypeScript AI agents:\n\n- Instrument runs with `inspectRun` and `step`\n- Write and read **local JSONL traces** (`schemaVersion: \"0.1\"` manual traces remain readable; schema 1.0 persisted rows are the v2 writer target)\n- Inspect with **`list`**, **`view`**, **`clean`**, **`logs`**, **`tail`**, **`export`**, **`diff`**, **`timeline`**, **`stats`**, **`search`**\n\n**Stable root APIs:** `createInspector()`, `inspectRun()`, `maybeInspectRun()`, `step()`, `step.llm()`, `step.tool()`, `observe()`, `getCurrentCorrelationMetadata()`.\n\nPass `enabled: false` to `inspectRun` for a no-trace passthrough. Use `maybeInspectRun` with `AGENT_INSPECT=1` to toggle tracing in eval or CI — see [docs/API.md](docs/API.md).\n\n**Shipped in 1.8.0:** experimental deterministic checks (`agent-inspect/checks` and `agent-inspect check`), safe-sharing workflows (`scan`, `verify-safe`, safe artifacts), and first public `@agent-inspect/openai-agents` package. Linked release aligns `agent-inspect`, `@agent-inspect/ai-sdk`, `@agent-inspect/langchain`, `@agent-inspect/tui`, and `@agent-inspect/openai-agents` at **1.8.0**.\n\n**Shipped in 1.7.0:** experimental `@agent-inspect/ai-sdk` telemetry integration for AI SDK v6 with a local no-network [ai-sdk-local-telemetry recipe](examples/recipes/ai-sdk-local-telemetry/), adapter conformance fixtures, OpenAI Agents/LangGraph support decisions, and local-first adapter docs. Examples keep `recordInputs: false`, `recordOutputs: false`, metadata-only capture, and no upload behavior. Linked release aligns `agent-inspect`, `@agent-inspect/ai-sdk`, `@agent-inspect/langchain`, and `@agent-inspect/tui` at **1.7.0**.\n\n**Shipped in 1.6.0:** experimental writer subpath (`agent-inspect/writers`), isolated `createInspector()` API via `agent-inspect/advanced`, local trace readers via `agent-inspect/readers`, OpenInference/OTLP JSON readers, universal `agent-inspect open`, and deterministic [runtime-and-ingestion recipe](examples/recipes/runtime-and-ingestion/). These remain local-only and do not add upload behavior. Linked release aligns all three then-published npm packages at **1.6.0**.\n\n**Shipped in 1.5.0:** non-breaking subpath exports; `what` and `report` CLI; dual-format read path (v0.1 + v0.2 JSONL); [what-report-inspect recipe](examples/recipes/what-report-inspect/). Linked release aligns all three npm packages at **1.5.0**.\n\n**Roadmap beyond current release work:** future work continues from the local runtime, universal ingestion, and optional adapter foundations. See [ROADMAP.md](ROADMAP.md).\n\n**Shipped in 1.4.0:** CI artifact recipe ([docs/CI-ARTIFACTS.md](docs/CI-ARTIFACTS.md)); `timeline`, `stats`, and `search` CLI; core helpers `buildRunTimeline`, `buildTraceStats`, `searchTraces`. Linked release aligns all three npm packages at **1.4.0**.\n\n**Shipped in 1.3.0:** correlation metadata; redaction profiles (`local` / `share` / `strict`); `export --redaction-profile`; LangChain `stream: true` metadata (chunk counts, duration — no full token capture by default).\n\n**Also in 1.x** (local-first extensions):\n\n- **v1.2.0** — experimental persisted-event foundation (`PersistedInspectEvent`, converters, in-memory tree bridge). Manual writing remains **`schemaVersion: \"0.1\"`**; v0.2 is **not written by default**.\n- Optional **`@agent-inspect/langchain`** and **`@agent-inspect/tui`**\n- **Fixtures** and **recipes** for deterministic adoption patterns\n\n**Honest boundaries:** log parsing, export, diff, LangChain/TUI programmatic APIs, and OpenInference/OTLP JSON exports are **experimental or compatibility-oriented**. Nothing performs **vendor upload** by default.\n\n## Optional packages\n\n### LangChain callback adapter (`@agent-inspect/langchain`)\n\nOptional package: official **LangChain.js callbacks** (`BaseCallbackHandler`), **metadata-oriented by default**, **no monkey-patching**, **no vendor sink**. Optional **`stream: true`** records chunk counts and stream duration **without storing full token text by default**. The LangChain adapter ships with 1.x; its programmatic API remains experimental and may evolve independently of the stable core tracing API.\n\n```bash\npnpm add agent-inspect @agent-inspect/langchain @langchain/core\n```\n\n```ts\nimport { AgentInspectCallback } from \"@agent-inspect/langchain\";\n\nconst callback = new AgentInspectCallback({\n  runName: \"support-agent\",\n  traceDir: \"./.agent-inspect\",\n  persist: true,\n  capture: \"metadata-only\",\n});\n\nawait agent.invoke(input, { callbacks: [callback] });\n// In-memory events still available:\nconst events = callback.getEvents();\n// Persisted runs are inspectable via CLI:\n// npx agent-inspect list --dir ./.agent-inspect\n// npx agent-inspect view \u003crun-id\u003e --dir ./.agent-inspect\n```\n\nSee [examples/08-langchain-adapter](examples/08-langchain-adapter/README.md) and [docs/ADAPTERS.md](docs/ADAPTERS.md).\n\n### TUI viewer (`@agent-inspect/tui`)\n\nOptional **Ink/React** package, installed separately. Use with an interactive terminal:\n\n```bash\npnpm add agent-inspect @agent-inspect/tui\nnpx agent-inspect view \u003crun-id\u003e --tui\n```\n\nThe TUI is available as a separate optional package; its programmatic API is experimental, while the CLI integration (`view --tui`) is the intended usage. Details: [docs/ADAPTERS.md](docs/ADAPTERS.md).\n\n## Examples and recipes\n\n| Example | Shows |\n| ------- | ----- |\n| [examples/00-quickstart-demo](examples/00-quickstart-demo/README.md) | Fast install-and-try trace |\n| [examples/01-basic](examples/01-basic) | `inspectRun` + `step` |\n| [examples/02-nested-steps](examples/02-nested-steps) | Nested tree |\n| [examples/03-parallel-steps](examples/03-parallel-steps) | Parallel siblings |\n| [examples/04-error-handling](examples/04-error-handling) | Failed steps |\n| [examples/05-observe-wrapper](examples/05-observe-wrapper) | `observe()` |\n| [examples/06-log-to-tree](examples/06-log-to-tree) | `logs` / `tail` |\n| [examples/08-langchain-adapter](examples/08-langchain-adapter/README.md) | LangChain callbacks |\n| [examples/recipes/rag-pipeline](examples/recipes/rag-pipeline) | RAG-shaped flow |\n| [examples/recipes/tool-failure-retry](examples/recipes/tool-failure-retry) | Tool failure + retry |\n| [examples/recipes/multi-agent-handoff](examples/recipes/multi-agent-handoff) | Handoff |\n| [examples/recipes/proactive-agent-logs](examples/recipes/proactive-agent-logs) | Structured logs |\n| [examples/recipes/pino-json-logs](examples/recipes/pino-json-logs) | pino-shaped JSON |\n| [examples/recipes/log4js-json-layout](examples/recipes/log4js-json-layout) | log4js embedded JSON |\n| [examples/recipes/nestjs-json-logging](examples/recipes/nestjs-json-logging) | NestJS JSON logs |\n| [examples/recipes/retry-fallback](examples/recipes/retry-fallback) | Fallback pattern |\n| [examples/recipes/parallel-tools](examples/recipes/parallel-tools) | Parallel tools |\n| [examples/recipes/github-actions-artifact](examples/recipes/github-actions-artifact) | CI trace artifacts |\n| [examples/recipes/deterministic-ci-checks](examples/recipes/deterministic-ci-checks) | v1.8 checks, baseline, and safe CI artifacts |\n| [examples/recipes/test-reporter-artifacts](examples/recipes/test-reporter-artifacts) | v1.8 Vitest/Jest reporter artifact patterns |\n| [examples/recipes/what-report-inspect](examples/recipes/what-report-inspect/) | `what` + `report` inspection |\n| [examples/recipes/runtime-and-ingestion](examples/recipes/runtime-and-ingestion/) | v1.6 runtime writers + universal ingestion |\n\n**Recipes** are deterministic and require **no external services** by default. Index: [examples/README.md](examples/README.md), [examples/recipes/README.md](examples/recipes/README.md).\n\n## Security and privacy posture\n\n- **Local files by default** — no upload, no vendor sinks in core workflows.\n- **No API keys** required for core tracing and CLI inspection.\n- **Manual metadata** is user-controlled. By default, common sensitive keys are **redacted before disk**; pass `redact: false` to opt out. Long metadata is truncated and events are capped at 64 KiB per JSONL line. Review traces and exports before sharing.\n- **Review exports** before sharing (especially with richer attribute flags).\n\nSee [SECURITY.md](SECURITY.md) and the [safe trace sharing checklist](docs/SAFE-TRACE-SHARING.md).\n\n## agent-inspect comparison\n\nIt can **complement** LangSmith, Langfuse, Braintrust, Phoenix/OpenInference, OpenTelemetry, New Relic, Datadog, and similar platforms — but it does **not** replace their production or eval workflows.\n\nFor a detailed comparison, see [Compare with other tools](docs/COMPARE.md).\n\n## Documentation\n\n| Start here | Reference | Safety \u0026 boundaries |\n| ---------- | --------- | ------------------- |\n| [Getting started](docs/GETTING-STARTED.md) | [API](docs/API.md) | [Safe trace sharing](docs/SAFE-TRACE-SHARING.md) |\n| [Install smoke test](docs/INSTALL-SMOKE-TEST.md) | [CLI](docs/CLI.md) | [Security](SECURITY.md) |\n| [Log-to-tree quickstart](docs/LOG-TO-TREE-QUICKSTART.md) | [Schema](docs/SCHEMA.md) | [Limitations](docs/LIMITATIONS.md) |\n| [Logging playbook](docs/LOGGING-PLAYBOOK.md) | [Exports](docs/EXPORTS.md) | [Known issues](docs/KNOWN-ISSUES.md) |\n| [CI artifacts](docs/CI-ARTIFACTS.md) | [Adapters](docs/ADAPTERS.md) | [Compare with other tools](docs/COMPARE.md) |\n| [Visual demos](docs/SCREENSHOTS.md) | [Examples](examples/README.md) | |\n\nAlso: [Architecture](docs/ARCHITECTURE.md) · [Logs \u0026 tail](docs/LOGS.md) · [Diff](docs/DIFF.md) · [Changelog](CHANGELOG.md) · [Roadmap](ROADMAP.md) · [Contributing](CONTRIBUTING.md) · [Good first issues](GOOD-FIRST-ISSUES.md)\n\n## Contributing\n\nAgentInspect welcomes docs, fixtures, examples, and carefully scoped CLI improvements.\n\n- **Good first issues:** [GOOD-FIRST-ISSUES.md](GOOD-FIRST-ISSUES.md) — live batches [#7–#14](https://github.com/rajudandigam/agent-inspect/issues?q=is%3Aissue+is%3Aopen) and [#18–#30](https://github.com/rajudandigam/agent-inspect/issues/18) (comment on an issue before opening a PR)\n- **Discussions:** [github.com/rajudandigam/agent-inspect/discussions](https://github.com/rajudandigam/agent-inspect/discussions) — feedback, stack survey, integration ideas\n- **Roadmap:** [ROADMAP.md](ROADMAP.md) — Now / Next / Future direction (non-committal)\n- **Contributing guide:** [CONTRIBUTING.md](CONTRIBUTING.md) — validation commands, PR expectations, scope boundaries\n\n**Security:** Traces and logs may contain secrets. **Redact before sharing** in issues, Discussions, PRs, or exports. See [SECURITY.md](SECURITY.md) and the [safe trace sharing checklist](docs/SAFE-TRACE-SHARING.md).\n\n## Development\n\nFrom a clone of this repo:\n\n```bash\npnpm install\npnpm build\npnpm test\npnpm test:all\n```\n\nTo run the CLI from source after a build: `node packages/cli/dist/index.cjs --help`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajudandigam%2Fagent-inspect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajudandigam%2Fagent-inspect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajudandigam%2Fagent-inspect/lists"}