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.64.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.64.0
File Size Uploaded
pw_agent-1.64.0.tar.gz 145.3 kB Details

Built distribution (wheel)

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

Total release size: 290.0 kB

Release files / pw_agent-1.64.0.tar.gz

Download URL pw_agent-1.64.0.tar.gz
Size 145.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cf3df8bf291884a3eb4a855008237e39b0af54a214341f4108d78443fee22dc6
BLAKE2b-256 checksum
How to use checksums
a608751b3a4960db15cdb56ba0796c9083a9da29c019bb51e09477cdd8f53370
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.64.0-py3-none-any.whl

Download URL pw_agent-1.64.0-py3-none-any.whl
Size 144.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2da079af76d7ce04bf027e4b2e26404b9ed482b5c6bdbc77e64b6b10dabacfc1
BLAKE2b-256 checksum
How to use checksums
f1d1be7ef8b33fe11c11529fe6f4313f912842377fce75a323b5ce239b7e7c16
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

This release

1.64.0 This release

2 release files

1.63.0

2 release files

1.62.0

2 release files

1.61.0

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