Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Core Observal CLI operations: pull agents into your harness, scan installed components, diagnose and patch harness configs, authenticate, manage CLI settings, get components recommended for you, and discuss agent insights. Use when the user wants to install an agent, check setup, login, configure the CLI, ask what they should install, or ask how an agent is doing.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 168% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 220% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 318% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 345% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 343% | 0% |
--prompt and --description values to avoid shell quoting issues.observal auth status first. Other commands surface auth problems clearly on their own.<command> --help first. Never guess flag names.--output json on every list/show command. It is stable and machine readable.--yes / -y on destructive commands so they do not block on a confirmation prompt.qualified_name (namespace/slug) for agent and component show, install, pull, archive, and transfer commands. Bare names work only when unambiguous.namespace/slug; otherwise use --update for in-place edits or --bump for versioned releases.Connection failed or Not configured.OTEL_* or CLAUDE_CODE_ENABLE_TELEMETRY environment variables. Telemetry flows through session push hooks and reconciliation only.For requests like "find me an agent for incident resolution" or "what skill helps design good frontends", extract the useful keywords and search JSON first.
bashobserval agent list --search 'incident resolution' --output json observal registry skill list --search 'frontend design' --output json observal registry skill list --team platform-tools --search 'frontend design' --output json observal registry mcp list --search 'github docker' --output json
Summarize the top matches by qualified_name, description, and why they fit. If no results, retry with fewer keywords.
For open-ended asks instead ("what am I missing", "what should I install"), do not guess keywords — ask what fits this user's own sessions with observal registry recommend --output json. Check personalized first: false means no session history yet, so these are merely the most-used components; say so rather than implying they were chosen for the user. Fields and dismissals are in the observal-registry skill.
Install an agent's full config (rules, MCP servers, hooks, skills, sandboxes, prompts) into a local harness.
bashobserval agent pull NAMESPACE/AGENT_SLUG --harness kiro --no-prompt --dir .
For Pi (--harness pi): When pulling for Pi, the CLI downloads the agent into an isolated profile using its stable slug. If two installed namespaces use the same slug, the CLI qualifies the local profile name to avoid a collision. Crucial: After pulling, run /agent <local-profile-name> inside Pi using the exact local profile name printed by the CLI.
Flags:
--harness (required): claude-code, kiro, cursor, vscode, codex, copilot, copilot-cli, opencode, antigravity, goose, pi--version <semver>: install a specific version (e.g. 1.2.0). Omit for latest.--scope user|project: install scope for harnesses that support user or project installs--model <name> or --model <harness>=<name>: override saved model (repeatable)--tools t1,t2: Claude Code tool whitelist--env KEY=VALUE: MCP environment variable value (repeatable)--header Header-Name=VALUE: MCP auth header value (repeatable)--dry-run: preview file writes without touching disk--no-prompt: skip interactive confirmation--dir <path>: target directory (default: current)Merge behavior: MCP configs are merged with existing harness config files, not overwritten. Existing user entries are preserved.
Version pinning: When --version is specified, the exact content from that version is installed. The lockfile (~/.observal/lockfile.json) records the pin. If another agent depends on the same component at a different version, a warning is displayed.
If the user did not specify an harness, ask which one before running. After install, check local files:
bashobserval scan --harness kiro
scan verifies MCPs, skills, hooks, and agents. Prompts/sandboxes are injected into rules/MCP config; use the pull output/lockfile for membership.
Check for newer versions of installed agents and components.
bashobserval outdated observal outdated --harness claude-code --output json --no-report
Reads ~/.observal/lockfile.json and compares each pinned version against the registry's latest. Reports a table of outdated items with current vs latest version. Findings also land in your inbox as update_available items so they survive between runs; --no-report keeps the check purely local. Reporting is best-effort, so the table prints either way.
Read-only inventory of installed components across all detected harnesses. Never modifies any file.
bashobserval scan observal scan --harness kiro observal scan --harness claude-code
Reports: detected harnesses, MCP servers, skills, hooks, agents, and unregistered components.
Diagnose only. Does not fix anything.
bashobserval doctor
Reports: Observal config validity, server reachability, lockfile metadata drift against the active registry, hook installation status per harness, and skill presence. The repair prompt updates canonical lockfile metadata and Observal-managed harness hooks, including UUID-attributed Kiro agent hooks. Installed version pins remain unchanged. Exits non-zero if issues remain.
Install session telemetry hooks. Run with --dry-run first when the user is unsure.
bashobserval doctor patch --all-harnesses --dry-run observal doctor patch --all-harnesses observal doctor patch --harness kiro observal doctor patch --harness claude-code
Required: select --all-harnesses or at least one --harness. MCP commands and URLs are not modified. For Pi, Doctor installs the bundled TypeScript extension directly at ~/.pi/agent/extensions/observal.ts and removes the legacy npm package registration.
Remove Observal-managed hooks and env vars from harness configs. Leaves user content untouched.
bashobserval doctor cleanup --dry-run observal doctor cleanup observal doctor cleanup --harness kiro
bashobserval auth login observal auth login --server https://observal.example.com observal auth login --sso observal auth login --email me@x.com --password '...' observal auth whoami --output json observal auth status observal auth logout observal auth change-password observal auth set-username new-handle
On a fresh server, auth login auto-bootstraps an admin from localhost (no prompts needed). A username becomes the user's registry namespace and cannot be changed after the user owns an agent or component.
bashobserval team create 'Platform Tools' --handle platform-tools -d '...' # reviewer+; creator=owner; handle reserved vs usernames observal team members list HANDLE_OR_ID; add|remove HANDLE_OR_ID USER [--role ROLE] observal team delete|leave HANDLE_OR_ID # owner/admin; last owner protected
bashobserval config show observal config path observal config set output json observal config set server_url https://observal.example.com observal config aliases observal config alias MY_AGENT abc-123
Use this when the user asks how an agent is doing, what is working, what is broken, why a version changed, or what to improve.
Always fetch JSON first so you can reason over every report section, then answer conversationally.
bashobserval ops insights list AGENT_NAME --output json observal ops insights show AGENT_NAME latest --output json observal ops insights show AGENT_NAME latest --section suggestions --output json observal ops insights show AGENT_NAME latest --section friction_analysis --output json
Available sections:
at_a_glance: health, working areas, blockers, quick winwhat_they_work_on: project areas and session countsinteraction_style: how users interact with the agentusage_patterns: session shape, tools, prompts, durationwhat_works: strengths backed by sessionsfriction_analysis: recurring failure modes and examplessuggestions: config additions, features to try, usage changesusage_cost_analysis: cost, cache, and model efficiencyversion_comparison: current version compared with a baselineregression_detection: what improved or degraded versus previous dataon_the_horizon: higher leverage workflow opportunitiesfun_ending: memorable qualitative momentFor broad questions, run full show JSON and summarize health, top friction, top strengths, cost, and next actions. For narrow questions, fetch the specific section. If no completed report exists, offer to generate one:
bashobserval ops insights generate AGENT_NAME --period 14 --wait observal ops insights generate AGENT_NAME --version 1.2.0 --compare 1.1.0 --period 30 --wait
Keep the answer grounded in the JSON. Say when the report is missing a section or has low session count.
Reuse suggestions come first. A suggestions.features_to_try entry carrying a component_ref object already exists in this registry — the server validated it and strips the field from anything it could not resolve. Report those ahead of create-new suggestions, quoting component_ref.qualified_name and latest_version verbatim. No component_ref means it is not a registry component: never tell the user to install it. When nothing is reused, narrative.registry_match says why; see observal-ops for its fields.
| Error | Action | |-------|--------| | Connection failed | Server unreachable. Use the observal-advanced skill's Local Fallback procedure | | Not configured / No server | Run observal auth login | | 403 Forbidden | Check observal auth whoami; user lacks required role | | 404 Not found | Verify qualified_name with observal agent list --output json | | 409 Ambiguous | Retry with the returned namespace/slug identity |
For every CLI invocation, format your response:
For full command reference, read references/commands.md. For agent creation use the observal-agents skill. For registry operations use observal-registry. For observability use observal-ops. For admin tasks use observal-admin.
Other measured skills in the registry, with their headline benchmark lift.