Skip to content

Getting Started

NewMe505 edited this page Oct 12, 2026 · 1 revision

Getting Started

Requires Python 3.12 and uv. Behind a corporate proxy, export UV_SYSTEM_CERTS=1 for every uv command.

git clone https://github.com/NewMe505/SCIO.git && cd SCIO
uv sync --all-extras --group dev
uv run pytest                                  # offline, Fake provider, about two minutes
uv run python scripts/check_docs.py            # docs checks
uv run python -m evals.runner --suite regression --provider fake --trials 5

Credentials

Either set ANTHROPIC_API_KEY, or log in once with the Anthropic CLI (ant auth login; install from the releases page) and let the SDK pick up the profile. A set ANTHROPIC_API_KEY always wins over the profile, so unset a stale one. The profile's refresh token rotates; an invalid_grant error means log in again. Live runs cost real money: run one trial, read the cost, then scale.

Offline by default: SCIO_PROVIDER_OVERRIDE=fake routes every role to the Fake provider, which CI uses for everything.

Task mode: one task to one pull request

The spec is Markdown: the first heading is the title, checkbox lines are the acceptance criteria. The run pauses for a human before merge.

uv run scio run --spec task.md --repo https://github.com/you/repo --issue 12
uv run scio resume --thread run-ab12cd34 --decision "approved"
uv run scio report --thread run-ab12cd34          # tokens and dollars by role, escalations, timeline
  • --tier T0|T1|T2 pins the tier and sizes the budget for it; without it the router decides and the budget follows its decision.
  • SCIO_GH_REPO=owner/name pushes the branch and opens the draft PR from the repository's template; without it the run is offline and the PR body is written under .scio/artifacts/.

Product mode: a prompt to a bootstrapped repository (M7)

uv run scio new --prompt "A CLI todo app with tags and JSON export" --dir ./todo [--gh you/todo]
uv run scio new --thread new-ab12cd34 --dir ./todo --decision "1: developers; 2: add and list; 3: no sync"
uv run scio new --thread new-ab12cd34 --dir ./todo --decision approve      # or revision notes

A prompt starts a thread; no prompt resumes one. The run stops after the interview questions and on the PRODUCT.md draft; with --gh it asks once more before creating the GitHub repository. The result is a git repository on main with PRODUCT.md, NOTES.md, .scio/product/progress.json, a package that answers --version, one smoke test, CI running the profile's lint and tests, README, CHANGELOG, LICENSE and .gitignore. Lint and tests ran green before the bootstrap commit. One live run from an empty directory cost $0.15.

Settings

Every setting is an environment variable with the SCIO_ prefix (see scio/settings.py).

Variable Meaning
SCIO_PROVIDER_OVERRIDE=fake route every role to the offline Fake provider
SCIO_TOOLCHAIN=python toolchain profile for the target repository (only python until M10)
SCIO_SANDBOX_BACKEND=local|docker|e2b sandbox backend; local cannot disable the network
SCIO_SANDBOX_DOCKER_IMAGE, SCIO_SANDBOX_E2B_TEMPLATE image or template for the isolated backends
SCIO_CHECKPOINT_DSN memory://, sqlite:///path (default) or postgresql://...
SCIO_EFFECTS_PATH the idempotent side-effect log
SCIO_GH_REPO=owner/name enable GitHub writes
SCIO_ROLE_OVERRIDES_PATH an A/B role configuration (evals/configs/*.yaml)
SCIO_OTEL_EXPORTER=console|otlp tracing; SCIO_OTEL_CAPTURE_CONTENT=1 records prompt text on spans
SCIO_RUN_LIVE_TESTS=1 enable the live test suite under tests/live

Models, roles, effort and prices live only in configs/models.yaml; code never names a model. Per-tier budgets and escalation thresholds live in configs/budgets.yaml.

Clone this wiki locally