Manage your exceptions from the command line or with AI bots. The CLI is a single bash script that requires only curl and jq.

Using Claude Code, Codex, Hermes, OpenClaw, or another AI coding agent? Pair the CLI with our agent skills for one-command triage and fix.

Install

curl -fsSL https://raw.githubusercontent.com/theinventor/Oopsie/main/cli/oopsie -o oopsie
chmod +x oopsie
sudo mv oopsie /usr/local/bin/  # optional: add to PATH

Setup

Add a connection — a server URL plus an API key. Use your User API Key (from the Account page) to reach every project with one key:

oopsie config add prod --server https://your-oopsie-instance.com --key YOUR_USER_API_KEY

Or use a Project Key (from project settings) if you only need one project:

oopsie config add myproject --server https://your-oopsie-instance.com --key YOUR_PROJECT_KEY

With a user key, pin the project you work with most so you don't have to pass --project every time:

oopsie config set-project myapp

Everyday Commands

Command Description
oopsie whoamiShow current connection, auth type, and project access
oopsie projectsList all projects you can access (user key) or the one project (project key)
oopsie projectSummary of the active project (pinned or --project)
oopsie errorsList error groups for the active project
oopsie errors --status resolvedFilter by status (unresolved/resolved/ignored)
oopsie errors --workflow-state blockedFilter by agent workflow state
oopsie show <id>Show error group details and recent occurrences
oopsie state <id> in_progress --note "..."Set workflow state without resolving or ignoring
oopsie note <id> --body "..."Add investigation evidence
oopsie resolve <id>Mark as resolved
oopsie ignore <id>Archive (ignore) an error group
oopsie reopen <id>Reopen a resolved or ignored error group

Global Flags

FlagDescription
-p, --project <name>Scope to a specific project for this command (overrides pinned default)
-c, --connection <name>Use a non-default connection
oopsie errors --project myapp       # one-off override
oopsie errors -c staging -p myapp   # different server, specific project

Multiple Connections

Add connections for each server/environment. config use picks the default.

oopsie config add prod    --server https://oopsie.example.com         --key USER_KEY
oopsie config add staging --server https://staging.oopsie.example.com --key USER_KEY
oopsie config use prod
oopsie config list

API Reference

The CLI talks to these JSON API endpoints (Bearer token auth):

Method Endpoint Description
GET/api/v1/projectOne project (project key) or all accessible projects (user key)
GET/api/v1/error_groupsList error groups (?status=, ?workflow_state=, ?limit=, ?offset=)
GET/api/v1/error_groups/:idError group details + occurrences + activity
PATCH/api/v1/error_groups/:id/workflow_stateSet workflow state with optional note
POST/api/v1/error_groups/:id/notesAdd investigation note
PATCH/api/v1/error_groups/:id/resolveMark resolved
PATCH/api/v1/error_groups/:id/ignoreArchive (ignore)
PATCH/api/v1/error_groups/:id/unresolveReopen

All endpoints require Authorization: Bearer YOUR_KEY. When calling project-scoped endpoints with a User API Key, include project_id as a query param or X-Project-Id as a header.

Agent Triage Flow

Use workflow state for coordination and lifecycle status for truth. Agents should set looking or in_progress before work, use blocked when external input is needed, add evidence with oopsie note, and resolve or ignore only when the note trail explains why.

oopsie state 42 looking --note "Reading recent occurrences"
oopsie note 42 --body "Reproduced locally with account 123"
oopsie state 42 ready_to_resolve --note "Fix deployed and verified"
oopsie resolve 42 --note "No new occurrences after deploy"