Quickstart
This guide takes you from zero to a working PACE setup. By the end you will have PACE installed, configured, a sprint plan written, and Day 0 (planning) complete — with per-story cost estimates pre-populated in PROGRESS.md and Day 1 ready to run.
Prerequisites
- Python 3.11 or 3.12
- A git repository with at least one commit
- An API key for your chosen LLM provider (default: Anthropic)
1 — Clone PACE into your project
PACE lives in a pace/ subdirectory at the root of your repository:
# From your repo rootgit clone https://github.com/pace-framework-org/pace-framework-starter paceYour directory structure will look like:
your-repo/├── pace/ ← PACE lives here│ ├── pace.config.yaml│ ├── pace/ ← Python package│ └── ...├── src/ ← your source code└── ...2 — Install dependencies
cd pacepython -m venv .venvsource .venv/bin/activate # Windows: .venv\Scripts\activate
# Install core + your LLM provider + your platform adapter:pip install PyYAML jsonschema
# Anthropic (default):pip install anthropic
# GitHub (default platform):pip install PyGithubSee Environment Variables for the full credential reference.
3 — Set your API key
export ANTHROPIC_API_KEY="sk-ant-..."For other LLM providers, see Switch LLM Provider.
4 — Configure PACE
Copy and edit the configuration file:
cp pace/pace.config.yaml.example pace/pace.config.yamlAt minimum, fill in:
product: name: "My App" description: > A one-paragraph description of your product, who it serves, and what problem it solves. github_org: "my-org"
tech: primary_language: "Python 3.12" test_command: "pytest -v --tb=short"
platform: ci: local # no GitHub token needed to start
llm: provider: anthropic model: claude-sonnet-4-6See Configure Your Project for all available fields.
5 — Write a sprint plan
Create plan.yaml at your repo root:
release: v1.0
stories: - id: story-1 title: "User model with hashed passwords" status: pending acceptance_criteria: - "User.create() stores bcrypt-hashed password" - "User.verify_password() returns True for correct password" - "All criteria covered by unit tests" out_of_scope: - "OAuth / social login"
- id: story-2 title: "POST /auth/login returns signed JWT" status: pending acceptance_criteria: - "Returns 200 + token for valid credentials" - "Returns 401 for invalid credentials" - "Token expires in 24 hours"See Write a Sprint Plan for the full plan format.
6 — Run Day 0 (sprint planning)
Day 0 is the planning phase. It estimates the cost of every story in your sprint plan and pre-populates PROGRESS.md — no code is written.
PACE_DAY=0 python pace/orchestrator.pyPACE will call the PLANNER agent once per sprint day (~$0.005 each) and produce:
.pace/day-0/planner.md— per-day cost estimates + sprint totalPROGRESS.md— pre-filled with Est. Cost column for every day
Example output:
[PACE] Day 0: Estimating cost for 5 sprint days...[PACE] Day 1: ~$0.45 — Simple scaffold with 1-2 files.[PACE] Day 2: ~$0.80 — Medium complexity with flag wiring.[PACE] Day 3: ~$0.55 — Straightforward delta calculation.[PACE] Day 4: ~$0.50 — Two code paths, one test fixture.[PACE] Day 5: ~$1.10 — End-to-end integration, more files.[PACE] Day 0: Total estimated sprint cost: $3.40See Day 0 — Sprint Planning for details.
7 — Run Day 1
PACE_DAY=1 python pace/orchestrator.pyPACE will:
- PRIME — generate today’s Story Card from your plan
- FORGE — implement the code using an AI tool loop
- GATE — run your tests and evaluate acceptance criteria
- SENTINEL — check for security and reliability issues
- CONDUIT — review your CI/CD configuration
- SCRIBE — update documentation and context files
All outputs are saved to .pace/day-1/. After Day 1 ships, PROGRESS.md is updated with the actual FORGE cost alongside the Day 0 estimate.
What’s next?
- Your First Sprint — full walkthrough of a 5-day sprint
- Day 0 — Sprint Planning — cost estimation deep dive
- The PACE Pipeline — understand how agents communicate
- pace.config.yaml Reference — every configuration field