Fix the flaky auth test and write the patch.
The coding agent that asks before it acts.
A cool terminal desk. Plan when you think, Build when you’re ready. Consent opens as soon as the path is known — then Once · Session · Always · Deny.
pip install -U pairwit && pairwit
First launch walks you through the provider API key.
py -m pip install -U pairwit && py -m pairwit
Use py -m pairwit if pairwit is not on PATH. First launch sets up your provider key.
pip install -U pairwit && pairwit
First launch walks you through the provider API key.
How it works
Install, flip Plan→Build, open the desk, then approve a write — see consent before the pitch.
$ pip install -U pairwit && pairwit
Successfully installed pairwit
Launching desk…
The coding agent is online.
Consent-first · local TUI
From your project root — see Install for macOS / Windows / Linux.
Should we rewrite the auth retry test?
Thought briefly
Plan: replace the flaky assert with a single retry — I’ll propose the patch, not apply it.
Tab→ Build when you’re ready to mutate- Mutators stay gated until you switch
Thought briefly
Build: writing tests/test_auth.py —
consent opens as soon as the path is known.
- Once · Session · Always · Deny
- You don’t wait for the full file body to stream
Press Tab in-app to flip Plan ↔ Build
Plan to reason read-only · Tab into Build when you’re ready to change files.
2
3
4
5
6
@dataclass(frozen=True) class ModelInfo: id: str provider: str label: str vision: bool = False
The coding agent is online.
Files and Editor beside chat. Drag ┊ to resize; double-click to reset.
awaiting approval · write_file
pairwit/tui/app.py
Allow this write? · path known — content may still stream
Try a choice — keys 1 2 3 n work in-app.
Writes and bash pause for Once / Session / Always / Deny as soon as the path or command is known — not after a long stream. Rules live in .pairwit.permissions.
Shipping now
Queue work for later
Pairwit runs it while your terminal’s open — no daemon, no cron.
Press /schedule when you’re ready.
/scheduleor header Schedulennew ·eedit ·rrun now ·ppause- Honors Plan / Build and your approval rules
What you get
Files, editor, Plan/Build, early consent, and /schedule — path-first by default.
Plan when you think · Build when you act
Tab flips modes. Plan keeps mutating tools gated so you can reason
safely; Build unlocks writes — and still asks Once / Session / Always / Deny.
Files and editor beside chat
Open the tree, edit buffers with syntax highlighting, save without leaving the
agent. Chat stays the main column — panes on demand with ⌃B / ⌃E.
Approvals that stick
Once, Session, Always, or Deny — asked when the path is known.
Remember Always in .pairwit.permissions so matching writes skip the gate.
What Pairwit is — and isn’t
- Consent-first coding agent (local Textual TUI)
- Plan / Build, early path consent, sessions,
/schedule - Queue prompts while a turn runs · Esc to cancel
- Multi-provider (Moonshot, OpenAI, Anthropic, Ollama, …)
- Not a full IDE or cloud watcher
- Not silent about side effects