Quickly Please (qp)

qp is a local-first task runner for humans and agents, driven by a single qp.yaml.
Why qp
- One config file (
qp.yaml) for the repo's runnable interface
- Fast CLI for humans (
list, help, guard, watch, plan, repair)
- Structured output for agents (
--json, --events NDJSON stream)
- Safe execution model (
safety, --allow-unsafe, agent: false)
- DAG execution with
run expressions and CEL-based when branching
- Reusable config primitives (
vars, templates, profiles)
- Harness primitives (
architecture, qp arch-check, qp init --harness)
Install
go install github.com/neural-chilli/qp/cmd/qp@latest
or build locally:
make build
./bin/qp list
Quick Start
qp init
qp list
qp help check
qp check
qp guard
Minimal qp.yaml
project: my-service
default: check
tasks:
lint:
desc: Lint code
cmd: golangci-lint run
test:
desc: Run tests
cmd: go test ./...
check:
desc: Local verification
run: par(lint, test)
Branching and DAGs
qp supports DAG composition in run:
tasks:
release:
desc: Build and deploy
run: build -> when(branch() == "main", deploy, notify)
Also supported:
par(a, b, c)
a -> b -> c
when(expr, if_true)
when(expr, if_true, if_false)
Task-level branching is also supported:
tasks:
deploy:
desc: Production deploy
cmd: ./scripts/deploy.sh
when: env("DEPLOY") == "1"
Events and Output
--json emits structured command output
--events emits NDJSON runtime events (plan, start, output, done, skipped, complete)
--no-color disables terminal styling
Examples:
qp check --json
qp check --events 2>events.jsonl
qp guard --events
Windows Daemon Mode
For Windows AV-heavy environments:
qp setup --windows
qp daemon status
Available daemon commands:
qp daemon start
qp daemon stop
qp daemon status
qp daemon restart
Docs
Status
qp is under active development. The user guide tracks implemented behavior in this repo.