Skip to content

Getting started

sortie is a local-first platform for autonomous web agents. Describe the data you want in plain language plus a JSON Schema, and sortie drives a real Chromium browser, locates content by meaning rather than brittle selectors, and returns clean, schema-validated JSON. Everything runs on your machine.

  • Node >= 22 and pnpm
  • An LLM API key (Anthropic, OpenAI, or any OpenAI-compatible endpoint — local Ollama/vLLM works too)
Terminal window
git clone https://github.com/garrison-hq/sortie
cd sortie
pnpm install
pnpm browsers # Playwright Chromium binary for local runs
cp .env.example .env # then fill in your provider key
pnpm build
pnpm dev # server + playground at http://localhost:3470

In .env, set at least one:

  • ANTHROPIC_API_KEY (+ optional ANTHROPIC_MODEL), or
  • OPENAI_API_KEY (+ optional OPENAI_MODEL), or
  • OPENAI_BASE_URL pointing at any OpenAI-compatible endpoint (Ollama, vLLM, OpenRouter, …) — no key required for local endpoints.

SORTIE_PROVIDER (anthropic | openai, default anthropic) picks which one is used by default. Never hardcoded — every run can override with --provider / --model.

Terminal window
node packages/core/dist/cli.js extract https://books.toscrape.com \
--schema '{"type":"object","properties":{"books":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"price":{"type":"number"}},"required":["title","price"]}}},"required":["books"]}' \
--instruction "the list of books on the page"

For convenience, alias the CLI:

Terminal window
alias sortie="node $(pwd)/packages/core/dist/cli.js"

It reads .env from the current directory or the repo root automatically.