Studio Beta

Customer-owned Studio analyzer. Localhost by default. Ingest disabled by default.

AgentInspect Studio is a customer-owned, read-only analyzer for multi-project workspaces. It is not a maintainer-hosted service.

Install

bash
npm install agent-inspect @agent-inspect/studio

Quick start (localhost)

bash
npx agent-inspect studio --workspace ./studio-registry.json

Defaults:

  • bind: 127.0.0.1:7340
  • database: ./.agent-inspect/studio.db (SQLite, disposable cache)
  • JSONL + workspace.json remain canonical

Studio registry

Create studio-registry.json beside your team workspace root:

json
{
  "schemaVersion": "1.0",
  "name": "platform-team",
  "projects": [
    { "id": "support-agent", "path": "/path/to/project", "label": "Support Agent" }
  ],
  "import": {
    "ciArtifactsDir": "./imports/ci",
    "bundlesDir": "./imports/bundles"
  }
}

Each projects[].path must contain .agent-inspect/workspace.json (v4 layout).

Optional file-drop ingest (v6.1+, disabled by default):

bash
npx agent-inspect studio import drop --workspace ./studio-registry.json
npx agent-inspect studio --ingest file-drop --workspace ./studio-registry.json

Registry import.fileDropDir points at the watched folder; allowlisted files (.jsonl, .suite.json, .tgz, .zip) copy into import.ciArtifactsDir / import.bundlesDir with idempotent SQLite bookkeeping. Ingest stays off until you pass --ingest file-drop or run studio import drop.

GitHub Actions artifacts (v6.1+, operator-initiated pull only):

bash
export GITHUB_TOKEN=...   # actions:read on your repo
npx agent-inspect studio import github \
  --repo owner/name \
  --run-id 123456789 \
  --artifact ci-artifacts \
  --workspace ./studio-registry.json

Downloads the artifact zip into import.bundlesDir, records idempotent ingest bookkeeping, and refreshes the studio project index. No maintainer GitHub App or AgentInspect proxy — CI tests use checked-in fixture archives only.

Manual bundle upload (v6.1+):

bash
npx agent-inspect bundle <run-id> --profile share --out ./bundle-out
npx agent-inspect studio import bundle --path ./bundle-out --workspace ./studio-registry.json

Validates metadata.json from a local share-safe bundle directory before copying into import.bundlesDir.

HTTP ingest (v6.1+, disabled by default):

bash
export STUDIO_INGEST_TOKEN=$(openssl rand -hex 32)
npx agent-inspect studio --ingest http --ingest-token-env STUDIO_INGEST_TOKEN
# POST /api/ingest/bundle or /api/ingest/artifact with Authorization: Bearer $STUDIO_INGEST_TOKEN

HTTP ingest stays off until --ingest http or ingest.http.enabled: true in the registry. Token required on every POST.

Ingestion security model (v6.1)

ControlBehavior
DefaultAll ingest channels off
File-dropExplicit CLI or --ingest file-drop only
GitHubOperator-initiated pull with their token only
HTTP POSTExplicit enable + STUDIO_INGEST_TOKEN (constant-time validation)
Body sizeBounded (default 50MB)
PathsTraversal guards; server chooses dest under registry import.*
SecretsTokens never logged; safe error messages only
NetworkStudio never phones home; no maintainer upload target
DataImported files are read-only evidence; JSONL canonical

Combine --auth basic when binding beyond localhost. Review imported artifacts with scan / verify-safe before sharing outside your network.

Network exposure

  • Default: localhost only.
  • --server: binds 0.0.0.0 with an explicit startup warning.
  • --auth basic --password-env STUDIO_PASSWORD: optional HTTP Basic auth (recommended for non-localhost).

Studio performs no default upload. Read routes are GET-only; optional ingest POST routes exist only when HTTP ingest is explicitly enabled (v6.1+).

API surface (read-only)

RoutePurpose
GET /api/healthStudio status
GET /api/projectsRegistered projects
GET /api/projects/:id/runsRun list
GET /api/projects/:id/sessionsSession index
GET /api/projects/:id/suitesSuite results
GET /api/projects/:id/checksCheck summaries
GET /api/search?projectId=&q=Metadata search
GET /api/diff?projectId=&left=&right=Regression diff
GET /api/bundles/export?projectId=&runId=Bundle export hints (CLI assembly)

Postgres

Postgres URLs are reserved for team deployments and are not required for local use. v6.0 ships SQLite by default in @agent-inspect/studio only — never in root/core.

Full reference remains in GitHub docs during the docs migration.