Skip to main content

PW Agent 🧠

CLI coding assistant powered by your Ollama GPUs via PastaWater.

Install

The recommended way to install pw-agent is using pipx to keep it isolated from your other Python packages:

pipx install pw-agent

Alternatively, you can use standard pip: pip install pw-agent

Usage

pw-agent

First run guides you through setup — paste your API token, pick a GPU, start chatting.

Features

  • Interactive REPL with real-time streaming and a premium dashboard status bar.
  • Plan vs Build Modes: Use /plan for read-only analysis and /build for execution.
  • Context Discovery: Automatically finds PW_AGENT.md for project-specific rules.
  • Tab Autocomplete for commands, file paths, and GPU slots.
  • Session Control: Fresh sessions by default; use -c to resume where you left off.
  • File Injection: /add file.py or @file.py — inject files into the LLM's context.
  • Batch Processing: Model can run multiple tool calls in a single turn.
  • GPU Fleet Control: /models to view GPUs and /use N to switch connections or slots.
  • AI Commits: /commit to generate and apply git commit messages based on your diff.
  • Safety First: -y flag for auto-approve; otherwise, every file edit requires confirmation.

Connect

  • Cloud mode: Use your PastaWater API token to access your remote fleet.
  • Direct mode: Point at a local Ollama instance (--brain http://localhost:11434).

Get your token at pastawater.io/settings

Model compatibility (tool calling)

Agentic tool use needs both a capable model AND an Ollama whose tool-call parser tolerates that model's output drift.

Model Ollama Tool calling Notes
qwen3-coder:30b >= 0.31.2, pw-agent >= 1.52.0 verified needs native tools mode (below); ~20 GB resident on a single 24 GB card
qwen3-coder:30b >= 0.31.2, pw-agent <= 1.51.x broken every tool-requiring prompt dies on turn 0 with [Empty response from model], exit 3
qwen3-coder:30b 0.21.x broken intermittent qwen tool call parsing failed: EOF — session degrades to plain chat
llama3.1:8b any recent works weaker coder; fine for pipeline text tasks
laguna-xs-2.1 >= 0.32.13, pw-agent >= 1.54.0 verified native tools; write+read acceptance passed on a 4090 in 24s (turns:2, exit 0), SWE-bench 70.9
muse-glimmer:30b >= 0.32.8 (CUDA), pw-agent >= 1.54.0 verified native tools; write+read acceptance passed on a 4090 in 35s cold (turns:2, exit 0), 16.6GB resident. Multimodal (image input)

Native tools mode

Ollama >= 0.31 ships built-in renderer/parser pairs for some model families (template selection ... selected=renderer_parser renderer=qwen3-coder). For those models the server intercepts every <tool_call> tag the model emits and parses it with that family's native grammar. pw-agent's textual protocol puts JSON inside <tool_call>, which is not that grammar, so the server-side parser dies with qwen tool call parsing failed: EOF, discards the whole assistant message, and answers /api/chat with {"error":"EOF"}.

From 1.52.0 pw-agent sends Ollama's native tools schemas for these models, drops the textual protocol from the system prompt, and reads structured message.tool_calls back. Two safety nets:

  • Any model that hits a server-side parse failure is flagged automatically and the turn is replayed with native tools — no failed run, just a slower first turn.
  • PW_NATIVE_TOOLS=1 forces it on, PW_NATIVE_TOOLS=0 forces it off (the off case now reports the parse failure as a named error rather than an empty response).

Side effect: the system prompt drops from ~4.7 KB to ~1.7 KB for these models, since the renderer injects the tool definitions itself.

Failure signals

A session that ends without executing any tool due to parse failure/stall emits {"type":"result","subtype":"degraded","degraded_reason":..., "is_error":true} and exits with code 3; a missing model or dead endpoint fails preflight with the installed-model list and exits with code 2. Ollama-level errors (including tool-parse failures) are surfaced verbatim as [Error: Ollama: ...] instead of an empty response.

Only one large model fits a 24 GB card at a time — requesting a second large tag while one is resident forces CPU offload.

Debugging a silent run

--debug (or PW_DEBUG=1) dumps the model name, native-tools decision, num_ctx, every request message, the full assembled tool schema, and the raw model completion. All of it goes to stderr, so --output-format stream-json on stdout stays machine-parseable:

pw-agent --instance 0 --yes --debug \
  --output-format stream-json --print "..." 2>debug.log

Choosing the model

pw-agent is not read-only about models — the dashboard is the default, not a lock.

Behaviour
--model <tag> Overrides everything. Ollama loads that tag on the first request, evicting whatever is resident.
--model omitted Auto-detect: brain's last_known_chat_model (the dashboard pick, trusted over VRAM state) → resident chat model → /api/tags.
/model in the REPL Alias for /models — displays the fleet, switches nothing. There is no in-session switch; restart with --model.

The brain proxies /api/chat straight through with no model filtering, so nothing server-side rejects your choice. Two constraints:

  • The tag must already be pulled on that box. pw-agent never downloads — preflight fails with Model 'X' not found. Available: ... and exit 2.
  • On a 24 GB card a forced swap costs a cold load (~90 s for a 30B) and evicts the dashboard's model. If the dashboard swaps back you'll fight over the card.

Metadata

Release files for pw-agent 1.61.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pw-agent 1.61.0
File Size Uploaded
pw_agent-1.61.0.tar.gz 141.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pw-agent 1.61.0
File Interpreter ABI Platform
pw_agent-1.61.0-py3-none-any.whl Python 3 none any Details

Total release size: 285.1 kB

Release files / pw_agent-1.61.0.tar.gz

Download URL pw_agent-1.61.0.tar.gz
Size 141.8 kB
Tags Source
SHA-256 checksum
How to use checksums
81bda4baffd49f007d20b8e280952def8d94f4d724acdd69fac9cc8497af4b57
BLAKE2b-256 checksum
How to use checksums
d5ddda85a19dba8fd8343d757ba91f8dcbffe210da42a62df3f9f78177de3492
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / pw_agent-1.61.0-py3-none-any.whl

Download URL pw_agent-1.61.0-py3-none-any.whl
Size 143.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1709882e3f03db23e4e4c2b2114af07b0e9a871823b2699dad0e6df0426ca77a
BLAKE2b-256 checksum
How to use checksums
78659eda8ed9f1603781262cbc4f567f8569e23eb0e4a18c3a9d5bbbb16c2c9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

1.70.0

2 release files

1.69.0

2 release files

1.68.0

2 release files

1.67.0

2 release files

1.66.0

2 release files

1.65.0

2 release files

1.64.0

2 release files

1.63.0

2 release files

1.62.0

2 release files

This release

1.61.0 This release

2 release files

1.60.0

2 release files

1.59.0

2 release files

1.58.0

2 release files

1.57.0

2 release files

1.56.0

2 release files

1.55.0

2 release files

1.54.0

2 release files

1.50.9

2 release files

1.50.8

2 release files

1.50.7

2 release files

1.50.6

2 release files

1.50.5

2 release files

1.50.4

2 release files

1.50.3

2 release files

1.50.2

2 release files

1.50.1

2 release files

1.50.0

2 release files

1.49.1

2 release files

1.49.0

2 release files

1.48.1

2 release files

1.48.0

2 release files

1.47.9

2 release files

1.47.8

2 release files

1.47.7

2 release files

1.47.6

2 release files

1.47.5

2 release files

1.47.4

2 release files

1.47.3

2 release files

1.47.2

2 release files

1.47.1

2 release files

1.47.0

2 release files

1.46.7

2 release files

1.46.6

2 release files

1.46.5

2 release files

1.46.4

2 release files

1.46.3

2 release files

1.46.2

2 release files

1.46.1

2 release files

1.46.0

2 release files

1.45.1

2 release files

1.45.0

2 release files

1.44.2

2 release files

1.44.1

2 release files

1.44.0

2 release files

1.43.2

2 release files

1.43.1

2 release files

1.43.0

2 release files

1.42.0

2 release files

1.41.1

2 release files

1.41.0

2 release files

1.40.4

2 release files

1.40.3

2 release files

1.40.2

2 release files

1.40.1

2 release files

1.40.0

2 release files

1.39.3

2 release files

1.39.2

2 release files

1.39.1

2 release files

1.39.0

2 release files

1.38.3

2 release files

1.38.2

2 release files

1.38.1

2 release files

1.38.0

2 release files

1.37.0

2 release files

1.36.0

2 release files

1.35.0

2 release files

1.34.0

2 release files

1.33.0

2 release files

1.32.4

2 release files

1.32.3

2 release files

1.32.2

2 release files

1.32.1

2 release files

1.32.0

2 release files

1.31.0

2 release files

1.30.7

2 release files

1.30.6

2 release files

1.30.5

2 release files

1.30.4

2 release files

1.30.3

2 release files

1.30.2

2 release files

1.30.1

2 release files

1.30.0

2 release files

1.29.0

2 release files

1.28.0

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.9

2 release files

1.7.8

2 release files

1.7.7

2 release files

1.7.6

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.8

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.9

2 release files

1.4.8

2 release files

1.4.7

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.9

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page