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.
Prerequisites
Section titled “Prerequisites”- Node >= 22 and pnpm
- An LLM API key (Anthropic, OpenAI, or any OpenAI-compatible endpoint — local Ollama/vLLM works too)
Install and run
Section titled “Install and run”git clone https://github.com/garrison-hq/sortiecd sortiepnpm installpnpm browsers # Playwright Chromium binary for local runscp .env.example .env # then fill in your provider keypnpm buildpnpm dev # server + playground at http://localhost:3470Configure a provider
Section titled “Configure a provider”In .env, set at least one:
ANTHROPIC_API_KEY(+ optionalANTHROPIC_MODEL), orOPENAI_API_KEY(+ optionalOPENAI_MODEL), orOPENAI_BASE_URLpointing 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.
First extraction
Section titled “First extraction”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:
alias sortie="node $(pwd)/packages/core/dist/cli.js"It reads .env from the current directory or the repo root automatically.
Where to go next
Section titled “Where to go next”- Semantic extraction — schemas, instructions, and how self-healing extraction works.
- Web agents — multi-step goals and the credential security model.
- Search & fetch — discover pages and turn URLs into Markdown, no LLM key needed.
- CLI reference — every command and flag.