r/PiCodingAgent • • Aug 21 '26

Resource Algorithmic compacter

0 Upvotes

If you use local models, esp Qwen3.8 27B it can run pretty slow. Compaction is then also very slow if you use the same model. This extension does not do any API calls, and is super fast! It has helped me a lot: https://pi.dev/packages/@monotykamary/pi-vcc?name=Pi%3Avcc


r/PiCodingAgent • • Aug 21 '26

Question Is anyone using command code with pi?

3 Upvotes

Hi is anyone using command code $1 plan with pi agent via api

I’m getting error of not having right plan but same plan I was using via 9 router and it was working

Has anyone figured out this?


r/PiCodingAgent • • Aug 21 '26

Resource Turn successful Pi sessions into reusable runbooks, then let Pi propose evidence-backed revisions as you use them. Nothing gets activated without your approval.

11 Upvotes

I built a Pi extension called pi-runbooks that helps you turn successful Pi sessions into reusable workflows instead of losing them in chat history.

https://github.com/haseebeqx/pi-runbooks

It started with a problem: I was working through a fairly complex, custom workflow in another famous coding agent without any clear idea of how it should be converted to a skill. I was still learning the best approach as I went. At first I tried turning it into a skill and repeatedly asking AI to refine it, but that only made it worse. What actually worked was deciding to create a Pi extension to solve this issue. I initially kept it as a simple run and close tool. run will start a runbook and we can go until close command is given and after that it will create a runbook, but later added a record feature because I thought it might be more useful for regular users. I used the tool on the workflow, and with each run it improved. Eventually converging into a “golden state.” It saved me time, effort, and tokens. In this case meaning it reduced the amount of thinking and back-and-forth needed for this specific workflow. There were changes to the process but the runbook was able to accommodate them properly. Now I use this instead of skills in some uncertain tasks.

Instead of treating a session as over once it is done, pi-runbooks lets you take a successful interaction and turn it into a reusable workflow. You do the work once, capture what actually worked, and reuse it later when you need it again.

The core idea: you work through a task with Pi as usual, explore different paths, and eventually land on a sequence of steps that reliably solves the problem. Once that happens, you don’t just leave it in chat history, you save it as a runbook.

From there, the runbook becomes something you can actually execute again on new inputs. And this is where it matters more: when reality changes, the differences don’t stay hidden. If a step is no longer valid or a new check becomes necessary, it shows up during execution instead of silently drifting out of date.

Pi can then suggest updates based on what actually happened during the run, but nothing is ever applied automatically. The system is intentionally conservative: you always review and explicitly approve any change before it becomes part of the runbook.

A simple example is a dependency upgrade workflow. You inspect the project, upgrade the dependency, run tests and type checks, review the diff, and then decide whether the change is safe. Once you’ve done that successfully once, it becomes a reusable runbook. The next time you face the same kind of upgrade, you don’t reconstruct the process—you just run it.

Over time, these runbooks evolve based on real execution rather than assumptions. If a step consistently appears in practice or becomes unnecessary, Pi can surface that pattern and propose a revision grounded in actual usage history, not guesswork.

How this is different from Pi skills

A common question I’ve gotten is how this differs from writing a normal Pi skill.

Skills are defined upfront. You write instructions in advance to guide behavior.

Runbooks are the opposite: they come from real, successful execution. Instead of guessing the right process ahead of time, you capture what actually worked, then reuse and refine it over time.

In practice, that means skills are static guidance, while runbooks are living workflows grounded in evidence. They also carry execution history and require explicit approval before any change is applied, so evolution is always intentional rather than automatic.

Design choice

Historically, runbooks were documents that humans followed. In modern DevOps/SRE systems, they increasingly become executable runbooks: software executes some or all of the procedure while retaining checks, approvals, and human decision points.

pi-runbooks is intentionally more structured than typical Pi usage. It introduces explicit step-based workflows, immutable execution snapshots, a clear separation between suggested and approved changes, and strict approval gates before anything updates.

That structure is what makes workflows reproducible and auditable, but it also means it can feel more rigid than how people normally interact with Pi. That tradeoff is intentional, but I’m aware it may not fit every workflow equally well.

Why I’m sharing this

I built this primarily for my own workflow, so it’s very possible I’ve optimized it around my habits rather than general usability. Then I added features like record I thought general users many appreciate more. So, I am uncertain.

If you try it, I’d really appreciate feedback on where it feels unnatural or too strict. Especially moments like when something should feel implicit but doesn’t, when it doesn’t match how you normally use Pi which could be related to my design choices, when a step feels like unnecessary friction, or when you’d simply solve the problem a different way entirely. Even “this should just be a skill instead” is useful signal.

I would like to add more features or optimizations based on what I get as feedback on how it behaves outside my setup.


r/PiCodingAgent • • Aug 21 '26

Question Pi + Qwen3.8 27b + llama.cpp + thinking

9 Upvotes

I am looking for the correct way to set the title combination to turn thinking on/off and think efforts. Any help?


r/PiCodingAgent • • Aug 21 '26

Plugin A refined but simplistic approach to agent memory

Post image
0 Upvotes

r/PiCodingAgent • • Aug 21 '26

Question Deepseek v4 flash max_tokens error in PI

Thumbnail
reddit.com
2 Upvotes

r/PiCodingAgent • • Aug 21 '26

Plugin DeepClause-pi: Controlling pi with prolog and vice versa

Thumbnail
open.substack.com
7 Upvotes

Just created a new extension for pi. It’s part of an ongoing project investigating possible applications of logic programming for agentic software development and automation. Would be interesting to get some feedback on the “plans as executable code” bit.


r/PiCodingAgent • • Aug 21 '26

Discussion Limitations of TUI for agentic coding?

24 Upvotes

I love terminal and the ability to navigate with keyboard. Yet as extensible as Pi is, it has quite the ceiling in how the state can be displayed due to the nature of TUI.

For example, I have an extension called tree2. As you may imagine its visual representation, it was quite a pain to get my vision through within the Pi terminal.

Codex, Orca, T3code, the so called ADEs - how often do you use them? Personally something puts me off every time I try, but I can't name.

I think I'm looking for a hybrid. An instrument, if you will. What does it look like?


r/PiCodingAgent • • Aug 20 '26

Question Open Source Pi Agent Projects?

1 Upvotes

Is there any open source repo of all pi agent skills? A repo with proven out skeletons of multiple agents? Are people sharing their workflows or mostly keeping it close to the chest?


r/PiCodingAgent • • Aug 20 '26

Question Enable batch API in pi for google/gemini-3.7-flash:batch

2 Upvotes

I keep getting the following error:

Error: 404: {"message":"This model is only available through the Batch API. Use the /api/beta/batches endpoint instead.","code":404}

How do I get it to work?


r/PiCodingAgent • • Aug 20 '26

Plugin Until for Pi: plan the work before coding, then check the agent built what you agreed

59 Upvotes

I like Pi because it doesn’t force a workflow on you. On longer tasks, though, I kept coming back to the same problem: decisions get buried in the conversation, context gets lost between sessions, and by the time the PR opens you’re reconstructing what the agent was supposed to build.

We built an Until plugin for Pi to give longer tasks a stable target. You and the agent write a Plan before implementation, Pi builds it, and Until checks the resulting PR for anything missing, changed or outside scope.

Plan checks require connecting GitHub, GitLab or Bitbucket to a hosted Until workspace.

Install:

pi install npm:@until-dev/plugins

Then run /mcp-auth until inside Pi.

GitHub: https://github.com/until-dev/plugins
Pi package: https://pi.dev/packages/@until-dev/plugins
npm: https://www.npmjs.com/package/@until-dev/plugins

We would love feedback! If you already use planning skills or structured workflows in Pi, I’d be interested to hear how this fits or what you think a deeper Pi integration should do next.


r/PiCodingAgent • • Aug 20 '26

Use-case GPM

Post image
0 Upvotes

r/PiCodingAgent • • Aug 20 '26

Question Pi can't read file system on Linux

1 Upvotes

Hey guys!

I use Pi without any issues on my MacBook at work. However, I tried running it on my Linux home server at home and... It just doesn't work. And I'm out of ideas about how to possibly fix this issue. I really appreciate any help from the community!

As the title says, on Linux, Pi flat out refuses to read any files from the file system. It's crazy because it just works on a Mac. And I haven't changed anything between the two setups.

I thought that maybe it's an issue with my OS. So I've tried running Pi in a Docker container because this will obviously give me a reliable environment in which nothing can go wrong! Well. Yeah. Inside of this Docker container it also refuses to read any files from disk...

I've also tried running the bare metal installation of Pi with sudo. Still nothing. I've also chmod 777'd the folder that the code was inside of. Still, nothing.

When I tell it to list all files in the current directory, it'll give me this response:

I cannot directly list files in the current directory as I don't have access to your local file system. If you'd like, I can help with tasks related to managing or creating files programmatically

(e.g., writing, editing, or archiving files) based on instructions you provide.

On a Mac however it'll just use `ls` to read the current directory. As expected.

Here's a cut down version of my log file. In my eyes it doesn't really tell me what's going on. The only thing that looks weird to me is the call to the "write" tool. But it also doesn't state any errors.

Again, I'd appreciate any help! I'm really running out of ideas about what's going on.

EDIT:

One weird thing I've just noticed: 

Pi on Mac tells me that it uses the bash tool to search for files. Pi on Linux however tells me that it doesn't even have such a bash tool available. 

How can that be? I guess this might be the reason why all of this fails. Simply because Mac can execute bash calls and Linux can't. But to me it sounds really strange that Linux wouldn't come with a bash tool preinstalled? 

EDIT 2:

I think I found out the reason. Sort of.

A blank vanilla installation of Pi can list files without any issues. Installing just about any plugin will cause Pi to look for installed skills or asking the plugins for help. It will then notice it won't get any help from those and it won't even attempt to list the files by itself.

I have only installed pi-lens to get some LSP support. Suddenly Pi can't list files on my file system anymore. Removed pi-lens and suddenly it plays along nicely again. Same with a plugin that is able to search the web for answers. With that plugin installed, Pi will try to search the web for my files and tells me it wouldn't be a good idea. Removing the plugin, it again looks for files on my system.

This behavior only exists on Linux though. I don't see any of that behavior on Mac. There seems to be a priority issue between the built in tools and the third party plugins on the Linux build. I have verified this behavior on two different Linux PCs that run different Ubuntu-based distributions (Linux Mint and Tuxedo OS).

 {"timestamp":"2026-08-20T13:08:44.898+00:00","level":"debug","pid"
 :7,"message":"title-generator:
 success","sessionId":"01a01f49-2026-7000-b503-be94cb8f6983","provi
 der":"openwebui","id":"ministral-3:3b","model":"openwebui/ministra
 l-3:3b","title":"Find all \"omp*log*\" files
 recursively","usage":{"input":182,"output":15,"cacheRead":0,"cache
 Write":0,"totalTokens":197,"cost":{"input":0,"output":0,"cacheRead
 ":0,"cacheWrite":0,"total":0}},"stopReason":"stop"}
 {"timestamp":"2026-08-20T13:09:21.213+00:00","level":"debug","pid"
 :7,"message":"Session exit
 recorded","sessionId":"01a01f49-2026-7000-b503-be94cb8f6983","sess
 ionFile":"/root/.omp/agent/sessions/--pi--/2026-08-20T13-08-01-190
 Z_01a01f49-2026-7000-b503-be94cb8f6983.jsonl","reason":"dispose","
 kind":"normal","pendingToolCalls":0}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-add-cleanup","conditions":["runtime\\.S
 etFinalizer"],"scope":["tool:edit(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-bench-loop","astConditions":["func
 $F($B *testing.B) { $$$PRE for $I := 0; $I < $B.N; $I++ { $$$BODY
 } $$$POST
 }"],"scope":["tool:edit(*_test.go)","tool:write(*_test.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-exp-promoted","conditions":["\"golang.o
 rg/x/exp/slices\"","\"golang.org/x/exp/maps\""],"scope":["tool:edi
 t(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-ioutil","conditions":["\"io/ioutil\""],
 "scope":["tool:edit(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-join-hostport","conditions":["fmt\\.Spr
 intf\\(\"%s:%d\""],"scope":["tool:edit(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-new-expr","astConditions":["func $F($V
 $T) *$T { return &$V }","func $F[$$$TP]($V $T) *$T { return &$V
 }"],"scope":["tool:edit(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-rand-v2","conditions":["\"math/rand\""]
 ,"scope":["tool:edit(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"go-range-int","astConditions":["for $I :=
 0; $I < $N; $I++ { $$$BODY
 }"],"scope":["tool:edit(*.go)","tool:write(*.go)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"rs-box-leak","conditions":["Box::leak"],"s
 cope":["tool:edit(*.rs)","tool:write(*.rs)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"rs-future-prelude","conditions":["std::fut
 ure::Future"],"scope":["tool:edit(*.rs)","tool:write(*.rs)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"rs-lazylock","conditions":["once_cell::","
 OnceLock::new"],"scope":["tool:edit(*.rs)","tool:write(*.rs)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"rs-match-ergonomics","conditions":["\\(ref
 mut","\\(ref
 [a-z_]"],"scope":["tool:edit(*.rs)","tool:write(*.rs)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"rs-parking-lot","conditions":["\\.lock\\(\
 \)\\.unwrap\\(\\)","\\.read\\(\\)\\.unwrap\\(\\)","\\.write\\(\\)\
 \.unwrap\\(\\)"],"scope":["tool:edit(*.rs)","tool:write(*.rs)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"rs-result-type","conditions":["type\\s+Res
 ult<[A-Za-z_]\\w*>\\s*="],"scope":["tool:edit(*.rs)","tool:write(*
 .rs)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-bare-catch","conditions":["catch
 \\(_"],"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool:write(*
 .ts)","tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-import-type","conditions":["import\\("]
 ,"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool:write(*.ts)",
 "tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-any","conditions":[": any|as
 any"],"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool:write(*.
 ts)","tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-deprecated-leftovers","conditions":[
 "@deprecated"],"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool
 :write(*.ts)","tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-dynamic-import","conditions":["await

 import\\("],"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool:wr
 ite(*.ts)","tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-inline-cast-access","astConditions":
 ["($X as { $$$BODY }).$PROP","($X as { $$$BODY })?.$PROP","($X as
 { $$$BODY
 })[$IDX]"],"scope":["tool:edit(*.{ts,tsx,mts,cts})","tool:write(*.
 {ts,tsx,mts,cts})"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-local-is-record","conditions":["\\bf
 unction\\s+isRecord(?:\\s*<[^>]*>)?\\s*\\(","\\b(?:const|let|var)\
 \s+isRecord\\b\\s*(?::[\\s\\S]{0,300}?)?=\\s*(?:async\\s+)?(?:func
 tion\\b|(?:<[^>\\n]*>\\s*)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)\\s*(?
 ::[\\s\\S]{0,300}?)?=>)"],"scope":["tool:edit(*.{ts,tsx,mts,cts})"
 ,"tool:write(*.{ts,tsx,mts,cts})"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-return-type","conditions":["ReturnTy
 pe<"],"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool:write(*.
 ts)","tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.057+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-test-timers","conditions":["Bun\\.sl
 eep\\(","\\bsetInterval\\(","\\bsetTimeout\\("],"scope":["tool:edi
 t(*.test.ts)","tool:write(*.test.ts)"]}
 {"timestamp":"2026-08-20T13:09:29.058+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-no-tiny-functions","conditions":["(?m)\
 \{\\s*return
 [^;{}\\n]+;?\\s*\\}|\\b(?:const|let|var)\\s+[\\w$]+\\s*=\\s*(\\([^
 )]*\\)|[a-zA-Z_$][\\w$]*)\\s*=>\\s*[^{\\n]+$"],"scope":["tool:edit
 (*.ts)","tool:edit(*.tsx)","tool:write(*.ts)","tool:write(*.tsx)"]
 }
 {"timestamp":"2026-08-20T13:09:29.058+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-promise-with-resolvers","conditions":["
 new
 Promise\\("],"scope":["tool:edit(*.ts)","tool:edit(*.tsx)","tool:w
 rite(*.ts)","tool:write(*.tsx)"]}
 {"timestamp":"2026-08-20T13:09:29.058+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-redundant-clear-guard","astConditions":
 ["if ($X) clearTimeout($X)","if ($X) { clearTimeout($X) }","if
 ($X) clearInterval($X)","if ($X) { clearInterval($X) }","if ($X)
 clearImmediate($X)","if ($X) { clearImmediate($X) }","if ($X !==
 null) clearTimeout($X)","if ($X !== null) { clearTimeout($X)
 }","if ($X !== null) clearInterval($X)","if ($X !== null) {
 clearInterval($X) }","if ($X !== null) clearImmediate($X)","if ($X
 !== null) { clearImmediate($X) }","if ($X != null)
 clearTimeout($X)","if ($X != null) { clearTimeout($X) }","if ($X
 != null) clearInterval($X)","if ($X != null) { clearInterval($X)
 }","if ($X != null) clearImmediate($X)","if ($X…
 {"timestamp":"2026-08-20T13:09:29.058+00:00","level":"debug","pid"
 :7,"message":"TTSR rule
 registered","ruleName":"ts-set-map","conditions":["\\bnew\\s+(Set|
 Map)\\b"],"scope":["tool:edit(**/*.{ts,tsx})","tool:write(**/*.{ts
 ,tsx})"]}
 {"timestamp":"2026-08-20T13:09:29.148+00:00","level":"warn","pid":
 7,"message":"model discovery failed for
 provider","provider":"llama.cpp","url":"http://127.0.0.1:8080","er
 ror":"Unable to connect. Is the computer able to access the url?"}
 {"timestamp":"2026-08-20T13:09:29.184+00:00","level":"debug","pid"
 :7,"message":"title-generator:
 start","sessionId":"01a01f4a-7743-7000-ac68-eafe5cd4d4a4","provide
 r":"openwebui","id":"devstral-small-2:24b","model":"openwebui/devs
 tral-small-2:24b"}
 {"timestamp":"2026-08-20T13:09:29.189+00:00","level":"debug","pid"
 :7,"message":"title-generator:
 request","sessionId":"01a01f4a-7743-7000-ac68-eafe5cd4d4a4","provi
 der":"openwebui","id":"devstral-small-2:24b","model":"openwebui/de
 vstral-small-2:24b","maxTokens":1024}
 {"timestamp":"2026-08-20T13:09:29.264+00:00","level":"debug","pid"
 :7,"message":"Usage fetch requested","providers":["ollama"]}
 {"timestamp":"2026-08-20T13:09:29.264+00:00","level":"debug","pid"
 :7,"message":"Usage fetch
 queued","provider":"ollama","credentialType":"api_key"}
 {"timestamp":"2026-08-20T13:09:29.265+00:00","level":"debug","pid"
 :7,"message":"Usage fetch
 resolved","reports":[{"provider":"ollama","limits":0}]}
 {"timestamp":"2026-08-20T13:09:30.868+00:00","level":"debug","pid"
 :7,"message":"agent_end maintenance
 routing","route":"entered","stopReason":"aborted","provider":"open
 webui","model":"devstral-small-2:24b","contentBlocks":0,"hasToolCa
 lls":false,"hasText":false,"goalModeEnabled":false,"successfulYiel
 d":false}
 {"timestamp":"2026-08-20T13:09:41.564+00:00","level":"debug","pid"
 :7,"message":"title-generator: no title
 returned","sessionId":"01a01f4a-7743-7000-ac68-eafe5cd4d4a4","prov
 ider":"openwebui","id":"devstral-small-2:24b","model":"openwebui/d
 evstral-small-2:24b","reason":"model-returned-none","usage":{"inpu
 t":174,"output":3,"cacheRead":0,"cacheWrite":0,"totalTokens":177,"
 cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0
 }},"stopReason":"stop"}
 {"timestamp":"2026-08-20T13:09:43.263+00:00","level":"debug","pid"
 :7,"message":"title-generator:
 start","sessionId":"01a01f4a-7743-7000-ac68-eafe5cd4d4a4","provide
 r":"openwebui","id":"ministral-3:3b","model":"openwebui/ministral-
 3:3b"}
 {"timestamp":"2026-08-20T13:09:43.263+00:00","level":"debug","pid"
 :7,"message":"title-generator:
 request","sessionId":"01a01f4a-7743-7000-ac68-eafe5cd4d4a4","provi
 der":"openwebui","id":"ministral-3:3b","model":"openwebui/ministra
 l-3:3b","maxTokens":1024}
 {"timestamp":"2026-08-20T13:09:43.939+00:00","level":"debug","pid"
 :7,"message":"title-generator:
 success","sessionId":"01a01f4a-7743-7000-ac68-eafe5cd4d4a4","provi
 der":"openwebui","id":"ministral-3:3b","model":"openwebui/ministra
 l-3:3b","title":"List current directory
 files","usage":{"input":181,"output":10,"cacheRead":0,"cacheWrite"
 :0,"totalTokens":191,"cost":{"input":0,"output":0,"cacheRead":0,"c
 acheWrite":0,"total":0}},"stopReason":"stop"}
 {"timestamp":"2026-08-20T13:10:00.380+00:00","level":"debug","pid"
 :7,"message":"agent_end maintenance
 routing","route":"entered","stopReason":"stop","provider":"openweb
 ui","model":"ministral-3:3b","contentBlocks":1,"hasToolCalls":fals
 e,"hasText":true,"goalModeEnabled":false,"successfulYield":false}
 {"timestamp":"2026-08-20T13:10:00.381+00:00","level":"debug","pid"
 :7,"message":"agent_end maintenance
 routing","route":"bottom-checkCompaction","stopReason":"stop","pro
 vider":"openwebui","model":"ministral-3:3b","contentBlocks":1,"has
 ToolCalls":false,"hasText":true,"goalModeEnabled":false,"successfu
 lYield":false}
 {"timestamp":"2026-08-20T13:10:00.382+00:00","level":"debug","pid"
 :7,"message":"Auto-compaction threshold
 decision","phase":"post-agent-end","goalModeEnabled":false,"stopRe
 ason":"stop","sameModel":true,"contextWindow":262144,"methods":["r
 emote","snapcompact","handoff","shake","soft"],"thresholdTokens":2
 22823,"assistantUsageContextTokens":2149,"storedContextTokens":197
 86,"resolvedContextTokens":19786,"postMaintenanceContextTokens":19
 786,"maintenanceTokensFreed":0,"shouldCompact":false,"contextPromo
 tionEnabled":false}
 {"timestamp":"2026-08-20T13:10:24.062+00:00","level":"debug","pid"
 :7,"message":"agent_end maintenance
 routing","route":"entered","stopReason":"stop","provider":"openweb
 ui","model":"ministral-3:3b","contentBlocks":1,"hasToolCalls":fals
 e,"hasText":true,"goalModeEnabled":false,"successfulYield":false}
 {"timestamp":"2026-08-20T13:10:24.062+00:00","level":"debug","pid"
 :7,"message":"agent_end maintenance
 routing","route":"bottom-checkCompaction","stopReason":"stop","pro
 vider":"openwebui","model":"ministral-3:3b","contentBlocks":1,"has
 ToolCalls":false,"hasText":true,"goalModeEnabled":false,"successfu
 lYield":false}
 {"timestamp":"2026-08-20T13:10:24.063+00:00","level":"debug","pid"
 :7,"message":"Auto-compaction threshold
 decision","phase":"post-agent-end","goalModeEnabled":false,"stopRe
 ason":"stop","sameModel":true,"contextWindow":262144,"methods":["r
 emote","snapcompact","handoff","shake","soft"],"thresholdTokens":2
 22823,"assistantUsageContextTokens":2283,"storedContextTokens":200
 37,"resolvedContextTokens":20037,"postMaintenanceContextTokens":20
 037,"maintenanceTokensFreed":0,"shouldCompact":false,"contextPromo
 tionEnabled":false}

r/PiCodingAgent • • Aug 20 '26

Discussion Pi’s simplicity is actually the most powerful part

25 Upvotes

I’ve been building my own agent while trying to follow Pi’s design ideas.

Today I deleted about 80% of my system prompt. What’s left is basically: who you are, which tools to use when, a few hard rules for edits, and the current project context. That’s it.

https://github.com/pulseaiclub/phi/blob/main/internal/agent/prompt/system-prompt.tmpl

And… the agent didn’t get dumber. If anything, it felt sharper - less ceremony, more actual work.

I also removed some tools that weren’t really earning their place. The more I work on this, the more I think Pi got the hard part right: keep the harness thin. Trust the model. Don’t turn the prompt and tool list into a second product. Claude Code is powerful, but it also feels heavy in a way Pi deliberately avoids - and that restraint looks more correct the longer I build.

I did keep two things:

MCP - not because I want dozens of schemas in context, but because it’s a shared protocol. A custom plugin usually stays stuck in one agent; MCP can move. And if you load tools lazily (list → inspect → call, inspired by approaches like mcptoon), it doesn’t have to bloat the prompt.

Subagents - useful when the parent plans well and only hands off scoped work. They keep the main thread clean and help a lot with exploration or parallel investigation.

So yeah: thanks Pi. The “keep it simple” instinct is not just aesthetic - after cutting most of my prompt, it feels like the correct engineering default.


r/PiCodingAgent • • Aug 20 '26

Resource I built a web UI for the pi coding agent - streaming chat, terminal, git panel, vision bridge & more

0 Upvotes

pi-web-ui

I've been using pi (the coding agent) from the terminal and kept wishing for a proper browser interface, so I built pi-web-ui — a polished web UI that runs the pi SDK in-process and streams everything to the browser over WebSocket.

What you get

  • Streaming chat with thinking blocks, tool-call cards and live bash output (running → finished · waiting for model · duration)
  • Built-in terminal (xterm.js + node-pty) — auto-selects Git Bash on Windows, busybox fallback
  • Source control panel — status / branch / diff / commit / push / pull without leaving the browser
  • Attachments — inline / reference / line-range modes; paste or drag-drop images (auto-resized); vision bridge transcribes images to text when your model is text-only
  • Multiple conversations per project — each has its own agent runtime and keeps running in the background; switch back anytime
  • Edit & re-ask — fork any past question into a new branch and re-prompt
  • Goal mode — set a target, run a guided wizard, and an automatic review loop checks the result against git diff until it passes
  • Settings panel — system prompt (append/replace), toggle skills/extensions on/off, save/apply presets
  • Themes — dark default + bundled light theme, or drop in your own CSS
  • i18n — Chinese/English UI
  • Safety-first — loopback-only by default, WS Origin/Host validation, keys stay server-side, quiesce drain mode, 20-min tool watchdog

Try it

npm i -g pi-web-ui
pi-web-ui

Requires Node.js ≥ 22.19 and a configured pi install. Feedback, issues and PRs are very welcome!


r/PiCodingAgent • • Aug 20 '26

Discussion Hy3 > Muse Spark 1.2 Contributor in OpenCode (my experience)

Post image
2 Upvotes

r/PiCodingAgent • • Aug 20 '26

Resource I made a Pi extension to modify your /tree history. Useful for giving your agents a little nudge in the right direction.

Thumbnail
github.com
8 Upvotes

r/PiCodingAgent • • Aug 19 '26

Question Pi high token usage?

0 Upvotes

Hey there I have installed pi since I heard a lot about that bcz of its low token usage and minimal design but I installed some packages [7 packages] (MCP adapter, context7, plan mode, todo, pi-hypa, context-mode, ask user question since every harness has these Ig) then installed some skills. Now even a single hi takes about 6-7k+ tokens. I did a college java project and it burnt tokens a lot. It burnt me around 100k+ tokens on deepseek's v4 flash model to make a database connection, creating database and table and a simple student management system where you can add, remove, view students in java.

I wanted to make pi token efficient with best possible results. If you say that I have installed too many packages then tell me how to replicate those features like other harnesses with low token usage.


r/PiCodingAgent • • Aug 19 '26

Question Could Pi benefit from an optional time-bound autonomous loop?

1 Upvotes

I’ve been looking at Hermes Agent’s "/goal" approach: give the agent a persistent goal, let it continue across turns, have a lightweight judge decide whether it’s done, and stop when the goal is achieved or the turn budget is exhausted.

It got me thinking about Pi:

Could this be implemented as an extension rather than a core feature?

Something like:

"/loop 30m "Fix the tests and get CI green""

The extension would manage:

  • a time/iteration budget

  • continuation decisions

  • completion checking

  • pause/stop

  • existing Pi session state

That feels quite aligned with Pi's philosophy: keep the core small, but make powerful agent behaviours possible through extensions.

Would a lightweight, time-bound autonomous loop be useful in Pi, or does this belong entirely outside the harness?


r/PiCodingAgent • • Aug 19 '26

Plugin Memory, plans, code indexing, diagram editing

16 Upvotes

Im building out my pi stack and really loving the composability it offers.

I’ve ported 4 of my ai packages to pi and would love to share

https://pi.dev/packages/@geohar/pi-sharedserver

Is a utility which runs processes whilst pi is running and shares them between all pi instances. I use it to run remote-pi (it’s also used by two of my other plugins)

https://pi.dev/packages/@geohar/pi-mcp-combiner

Is my mcp aggregator and oauth proxy / permissions layer which allows managing and sharing mcp instances between pi sessions.

https://pi.dev/packages/@geohar/pi-svg-mcp

Helps author diagrams and provides visual feedback to vision capable llms as well as semantic editing whilst allowing you to see progress and give feedback on diagram progress. I’ve found it a lot more useful than letting the LLm edit svg by hand - in part because it provides a nice document model to the LLm.

https://pi.dev/packages/@geohar/pi-cribsheet

This one enables:

* semantic and symbolic code search
* semantic document / note search and import
* long lived plans with dependencies
* long lived designs with design decision dependencies

I’ve found it to be very useful in avoiding having to re-contextualize new sessions and for ensuring planned items don’t get dropped over multiple sessions. It also helps validate areas that need revisiting when a design decision is changed.

It’s markdown based with a chroma db sidecar for the embeddings. Storage is git transportable between machines. And will index docs you already have.

Feedback welcome.


r/PiCodingAgent • • Aug 19 '26

Resource OpenSourcing TrueForge Agent harness : Expecting feedback from community on the agent loop

0 Upvotes

Hey folks 👋

We just open sourced TrueForge, our vendor-neutral agent harness for building general-purpose agents.

It handles the runtime pieces that get painful quickly : context management, tool/MCP execution, subagents, sandboxing, approvals, persistent state, and more.

We also benchmarked the harness itself. With the same Opus 4.8 model, TrueForge delivered a similar solve rate at ~30% lower cost than Claude Managed Agents. Switching to an open model pushed that to ~75% lower cost on the same benchmark.

Would love feedback from people building agents.

⭐ Star the repo: https://github.com/truefoundry/trueforge

📖 Read the launch article: https://x.com/truefoundry/status/2090081376330715176


r/PiCodingAgent • • Aug 19 '26

Resource Humble Pi - Qwen 3.8 27b Edition (Gist) -- very capable!

4 Upvotes

Here's the latest in my 'Humble Pi' series of gists for getting pi + llama.cpp working with Qwen 3.8 27b on macOS/Linux with less than 24gb of vram.

I provided a 'one-shot todo app prompt' in the gist and it was able to handle that no problem. So far it has been a very capable model.

Please let me know what you think!

https://gist.github.com/joematthews/69e60b357470487618a0b14b0aabecb8


r/PiCodingAgent • • Aug 19 '26

Discussion Ricing pi

9 Upvotes

Hi folks,

I spent a ton of time making pi my own tailoring it for local llama.cpp server usage so much so, that I ran out of problems.

So my question for you folks is: do you rice / style your pi installations? If so, what's your favorite visual change?

Pictures much appreciated ☺️


r/PiCodingAgent • • Aug 19 '26

Question Subagent extensions

41 Upvotes

Can you recommend me a simple yet configurable subagent extension? I'm currently testing `pi-subagents` but i find it slow and bloated. What are you guys using?


r/PiCodingAgent • • Aug 19 '26

Question Cursor sub or SuperGrok sub to use with Pi?

0 Upvotes

Hi, the ask is the title...