Pairwit
The coding agent that asks before it acts.
A cool terminal desk — Plan when you think, Build when you’re ready.
Writes and bash pause for Once · Session · Always · Deny
as soon as the path (or command) is known.
pairwit.dev · Guide · PyPI · GitHub
Install
macOS / Linux
pip install -U pairwit && pairwit
Windows
py -m pip install -U pairwit && py -m pairwit
Public beta — APIs and UX may change. Feedback welcome.
On first launch, Pairwit opens a guided setup: provider → API key → model → connection check. Keys are saved to ~/.pairwit/.env.
Why Pairwit
| Consent-first | Mutating tools ask by default — as soon as the path or command is known, not after a huge write finishes streaming. Remember Once / Session / Always in .pairwit.permissions. |
| Plan / Build | Plan to reason read-only; Tab into Build when you’re ready to change files. |
| One desk | Chat, Files (⌃B), Editor (⌃E), and /schedule in a local Textual TUI — not a cloud watcher. |
| Queue while busy | Enter queues another prompt while a turn runs; Esc cancels. |
| Your models | Moonshot (Kimi), OpenAI, Anthropic, OpenRouter, DeepSeek, Ollama, and custom OpenAI-compatible endpoints. |
What it is — and isn’t
- Is: a consent-first coding agent for your terminal
- Is: Plan/Build, early approvals, sessions,
/schedule, framed chat wells + turn analytics - Isn’t: a full IDE or silent autopilot
Quick start
cd your-project
pairwit
Then ask anything. Attach with Ctrl+O, mention a file with @, switch Plan/Build with Tab, open Files / Editor from the header chips (or ⌃B / ⌃E).
Project rules live in .pairwit.md. Home config: ~/.pairwit/.
Desk at a glance
- Framed user well · plain Pairwit reply on paper
- Thought briefly while the model works; per-turn ↑/↓ tokens · time · cost under the reply
- Tool wells with path-first titles and soft diff highlighting
- Approval gate for
write_file/edit_file/bashbefore the change lands
From a checkout
pip install -e .
pairwit
# or
python -m pairwit
pairwit/ # Python package
ai/ # providers / streaming
agent/ # coding loop + events
tools/ # builtins + MCP
domain/ # sessions, permissions, prompts
tui/ # Textual app + theme + widgets/
core.py # attachments / mentions
docs/ # product docs
site/ # pairwit.dev (Cloudflare Pages)
Formerly Torso (and before that Greywit / Astro).
License
MIT — see the repo for details.
Metadata
Release files for pairwit 0.0.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pairwit-0.0.14.tar.gz | 103.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pairwit-0.0.14-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 229.7 kB
Release files / pairwit-0.0.14.tar.gz
| Download URL | pairwit-0.0.14.tar.gz |
|---|---|
| Size | 103.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d50f7c7037c9a4be1e42e2861129c01a55051897a364ea6ac71ecc96d1d87b1
|
|
BLAKE2b-256 checksum How to use checksums |
7d2cb0fd9a70775b3ed0d9782f169189f70fa88f39689d7c6cd4c4c942dffbb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / pairwit-0.0.14-py3-none-any.whl
| Download URL | pairwit-0.0.14-py3-none-any.whl |
|---|---|
| Size | 126.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d33b93f5dbe3672e28ade6cc4048575a47aca3cac26029c4af36e0ad08ae32aa
|
|
BLAKE2b-256 checksum How to use checksums |
9740a5abe2790dcfed7817c2ec965afc7050ab5239f17c119301f4ecff42539f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|