abra-ai
v0.1.5
Published
Observability for coding agents. abra snapshots Claude Code, Codex, Cursor, OpenCode, and Pi workspace activity via native hooks, extensions, and OTEL.
Maintainers
Readme
abra-ai
Observability for coding agents. abra-ai installs lightweight native hooks or
extensions into Claude Code, Codex, Cursor, OpenCode, and Pi that snapshot your
agent's workspace activity (file deltas, prompts, tool events) and stream it to
the abra ingest pipeline. One command onboards everything: detection, login,
capture install, and a verified test trace.
Quickstart
bunx abra-aiRunning the bare command in a terminal starts the onboarding wizard: it detects your installed agents, signs you in via device flow, installs the hooks, and sends a test trace to verify everything landed.
Non-interactive:
bunx abra-ai onboard --yes --allOr install globally:
bun add --global abra-ai
abra --helpThe package is
abra-ai; the installed command isabra.
Automation and ephemeral workspaces can skip device auth by injecting a scoped service token:
: "${ABRA_API_KEY:?set ABRA_API_KEY to an Abra service token}"
abra auth verify
abra hooks install --agent allabra auth verify checks the token and required traces:ingest scope without
writing a synthetic trace. The token remains in the environment and, where an
agent requires it, a mode-0600 provider config readable by same-user processes;
the OpenCode and Pi adapter files never embed it.
Supported agents
| Agent | Hook mechanism | Config written |
| --- | --- | --- |
| Claude Code | settings hooks + per-signal OTEL endpoints | ~/.claude/settings.json, ~/.claude/hooks/ |
| Codex | hooks + [otel] block | ~/.codex/hooks.json, ~/.codex/config.toml |
| Cursor | hooks (v1, workspace delta lane) | ~/.cursor/hooks.json |
| OpenCode | global native plugin (session, prompt, tool lifecycle) | ~/.config/opencode/plugins/abra-capture.js |
| Pi | global native extension (session, input, tool lifecycle) | ~/.pi/agent/extensions/abra-capture.ts |
OpenCode and Pi currently use the workspace-delta lifecycle lane. They do not claim transcript or OTLP coverage: neither agent has an Abra transcript normalizer or a verified native OTLP exporter.
Commands
abra # onboarding wizard (TTY) / help
abra onboard [--yes --all --agent claude,codex,cursor,opencode,pi] [--verification-id UUID]
abra hooks install --agent claude|codex|cursor|opencode|pi|all
abra init # alias of onboard
abra uninstall [--agent claude|codex|cursor|opencode|pi|all] [--purge] [--dry-run]
# reverse of init: remove hooks + telemetry (all agents by
# default); --purge also deletes local state (~/.abra) and is
# only allowed when removing all agents
abra auth verify [--json] # no-write ABRA_API_KEY + traces:ingest scope probe
abra test-trace [--json] # send a trace and verify it landed
abra workspace {init,snapshot,status,explain,log,gc,outbox}
abra skills list --effective
abra skills sync [--agent claude,codex,cursor|all] [--copy] [--force]
abra skills status
abra versionabra skills sync resolves the current checkout through the authenticated
repository binding, verifies the effective scoped-skill manifest and every
artifact digest, then updates user-level and project-level skills as one
rollback-safe transaction. It writes canonical bundles under .agents/skills
and compatibility links for Claude Code, Codex, and Cursor. Locally modified or
unmanaged paths are never replaced or removed unless --force is explicit.
User-global home skills belong to the user profile: syncing another authorized
repository does not remove or rewrite an unchanged home artifact, and
abra skills status reports it from either checkout.
Requirements
- Node.js >= 20 (no Bun required at runtime)
Links
- Homepage: abra.moda.dev
- Source: github.com/ModaLabs/abra (
apps/cli) - Issues: github.com/ModaLabs/abra/issues
