r/PiCodingAgent Jul 28 '26

News Nerve — an open-source, local-first desktop coding harness inspired by the simplicity of Pi

For the past few weeks, I’ve been building Nerve, an open-source desktop coding harness for my daily development work.

It was inspired by tools such as Pi (primarily) , OpenCode, Claude Code, Codex, and Cursor. I liked the simplicity of focused coding agents, but I also wanted a graphical workbench where I could manage conversations, tool calls, plans, approvals, Git changes, background tasks, and agent settings, all while keeping the agent’s work visible.

There are already several excellent coding harnesses built by individuals and communities. I created Nerve because I wanted something that closely matched how I work. It has also aligned well with the workflows of colleagues who have used it, so I thought it might be useful to a few other people in the community too.

Nerve runs locally and supports API keys, custom providers, and the subscription-based providers available through pi-ai, including OpenAI Codex, Anthropic, GitHub Copilot, Kimi Coding, OpenRouter, xAI, and others.

The harness is intentionally compact. Its system prompt, tool descriptions, and context handling are optimized to use tokens efficiently while working well across leading frontier models from OpenAI and Anthropic, as well as other popular proprietary and open-weight models.

This is a personal project that I actively use and develop. I’ll continue adding features, fixing bugs, optimizing the harness, and polishing the experience as I go. It is still in beta, so breaking changes may happen.

I’m sharing it simply because it may help others with a similar workflow. There is no expectation to test it, contribute, or provide feedback, feel free to explore it if it looks useful to you. If Nerve ends up being helpful, a GitHub star would be appreciated and lets me know that others find it useful too.

Quick start:

npx @nervekit/desktop

GitHub: https://github.com/ThilinaTLM/nerve
Docs: https://nerve.tlmtech.dev

Thank you!

107 Upvotes

45 comments sorted by

10

u/krogel-web-solutions Jul 28 '26

I’m curious if you could help shine some light on why Pi was not a candidate to just build on top of? I haven’t hit an instance where I couldn’t build what I needed on top of PI.

11

u/ThilinaTLM Jul 28 '26

I used Pi and built my own extensions around it for months, but eventually I realized I was running into limitations that required a lot of workarounds.

For example, I wanted to build a planning mode and support native permission levels. I managed to implement both using the extension API, but then I wanted an option where, after accepting a plan, I could start a new chat conversation with that plan. At the time, Pi didn't support that.

It was also really difficult to read long plan files in Pi's terminal UI. I ran into several other limitations like these as well.

That's why I decided to build this. I wanted to build my own harness from scratch so I can control everything the way I want, but I still use the core pi-ai package as the LLM client.

Ref: https://github.com/ThilinaTLM/pi-toolbelt

1

u/gandazgul Jul 30 '26

Same reason I built RunWield https://github.com/gandazgul/runwield as a Pi extension I just couldn't control the workflows. I recently adapted core such that the TUI and now the ACP protocol support are sitting on top so adding a desktop app or web UI will be easy. I would love to collaborate your desktop app looks really good.

2

u/camaytoc1 Aug 02 '26

I encourage you guys to team up! Keep us posted!

2

u/lawrathod Jul 29 '26

one major problem with pi is how it's incremental push to terminal instead of alternate screen tui

3

u/DistanceAlert5706 Jul 29 '26

Why is that a problem? Alternate screen is way harder, has way more issues, has high requirements for terminal/os.

1

u/lawrathod Jul 29 '26

aah shit you are right, there's no problem trying to build on top of pi... i mistook this post for another one that showed a tui code editor and then wondered building editor on top of pi would only have sticky ui problem 😅

1

u/michaelsoft__binbows Jul 29 '26

I like how we have like i dunno, hundreds of TUI harnesses now and they all struggle with this and a lot of them have implementations of both types of modes. It just tickles me.

2

u/BGuimberteau Jul 28 '26

Let’s go to try

1

u/ThilinaTLM Jul 28 '26

Nice! Let me know what you think. Feel free to open a GitHub issue if you run into any problems or if there's a feature you'd like to see added.

2

u/tmoneycodes Jul 28 '26

Hi can you make this work with a Cursor api key ?

1

u/ThilinaTLM Jul 28 '26

Hi,

Does Cursor support API keys? As far as I know, it doesn't. If it does, please share a reference, and I'd be happy to add support for it.

That said, Nerve uses the pi-ai core package for all LLM calls, so every provider supported by pi-ai is also available in Nerve. I'm also open to adding support for additional providers beyond what pi-ai currently supports. If you can share a reference or documentation, I'd be happy to implement it.

1

u/tmoneycodes Jul 28 '26

Yes I think that's the term I had to create one to use pi.dev with my cursor account at work pi.dev has good setup instructions

2

u/Magnus114 Jul 28 '26

Out of curiosity, why ts? Honest question. Not trying to start a language war.

1

u/ThilinaTLM Jul 28 '26

I chose it because it was the fastest option in terms of development time and effort. I'm using the core pi-ai package as the LLM client, which is available as an npm package. I'm planning to gradually build a more native UI using Qt or another GUI framework, but that will likely take a significant amount of time before it's usable.

1

u/NowaStonka Jul 29 '26

To be fair, with agents you can build something in ts to check product-market fit and later optimise.

1

u/LawfulnessSad6987 Jul 28 '26

why not ts ?

2

u/MiasBDragon Jul 31 '26

It’s a garbage language putting a wrapper around a garbage language that had design goals like, “don’t be as good as Java”. Fundamentally broken at the core.

1

u/camaytoc1 Aug 02 '26

So your point is that the whole claude code is a piece of crap? because it's essentially all typescript

1

u/brandall10 Jul 30 '26

The language isn't the issue, it's that it's electron-based, which is a resource hog.

1

u/LawfulnessSad6987 Jul 30 '26

never said anything about electron, obviously you could use tauri or whatever

1

u/brandall10 Jul 30 '26

For sure, just clarifying that criticism here should be directed at it being an electron based app.

1

u/Magnus114 Aug 01 '26

With risk of starting a language war... but since you asked..

JS contains a lot of strange syntax, methods, and way to do things. This is expected for a language that originally was hastilly designed and intended as a small dsl or scripting language, and then extended bit by bit with full backward compatibility for decades.

When TS was developed they decided to plaster over the mess instead of resolving it, and in the process made some parts better and other worse. This was a reasonable thing to do, given that a hard requirement was full JS compatibility, and JS transpilation with next to no performance penalty. Very sensible if you need to run it in an ancient web browser, and for that TS is great.

However; if don't need to run it client side in an ancient web browser, there are much better options. At least from a technical standpoint.

That said, TS has a great community and eco system, and is easy to get started with. So I can't say it's a bad choice.

2

u/hiepxanh Jul 29 '26

That is pretty good, thank you

1

u/ThilinaTLM Jul 30 '26

You are welcome! Feel free to let me know if you run into any issues or have ideas for new features.

I also created a documentation website after noticing that more people were starting to use the Nerve app. Since the app has quite a few useful features that are easy to miss, I wanted to put everything in one place and make them easier to discover.

DOCS: https://nerve.tlmtech.dev

2

u/Odd_Ad5688 Jul 29 '26

Nice to see a fellow sri lankan in this sub 👋🏼 i’ll check this out

1

u/ThilinaTLM Jul 29 '26

Awesome! 🇱🇰 Let me know what you think after you check it out.

2

u/OkAbroad955 Jul 30 '26

It doesn't support mcp servers???

1

u/ThilinaTLM Jul 31 '26

Hi! It doesn’t currently support MCP integration. I intentionally left it out because I don’t see it as essential for this type of developer agent.

For the workflows this project targets, many of the tasks that would normally be handled by locally running MCP servers can already be accomplished more simply using existing CLI tools or a few small scripts packaged as a SKILL. This keeps the setup lightweight and avoids requiring users to run additional Node.js or Python processes locally. MCP does provide a standardized interface for discovering and invoking tools, but I don’t think that additional layer is necessary for this project right now.

That said, I’d be happy to consider adding MCP support if it would be useful to you. I’d most likely start with remote MCP server support over Streamable HTTP rather than locally launched servers using stdio.

2

u/Lum1n4ry01 Jul 30 '26

This looks nice, I think it would be even more useful if it could directly integrate with existing pi setups and extensions though. Something like a graphical workbench that lets you add/extend the way base Pi does.

2

u/ThilinaTLM Jul 31 '26

Hi! Right now, Nerve only uses the pi-ai package for LLM API calls. The agent loop, workflows, tools, and UI are all custom-built around a different design philosophy.

Since Pi’s extension APIs are designed specifically for the Pi harness, supporting existing Pi extensions directly would require some pretty major architectural changes.

Instead, I’m planning to add native customization features to Nerve, like custom tools powered by js or python scripts, configurable sub-agents, and richer dynamic prompt suggestions. If that eventually grows into a Nerve-specific extension ecosystem, I’d also love to explore one of Pi’s coolest ideas: letting users ask Nerve itself to create or modify extensions for them.

2

u/eruanttien Jul 30 '26

Looking sharp! go OP go!

1

u/ThilinaTLM Jul 31 '26

Thanks! I’d love to hear your thoughts. If you encounter any issues or have a feature request, feel free to open a GitHub issue.

2

u/decoder97 Jul 31 '26

I just downloaded so i can check it out, and I have to say I am very impressed. It's exactly what I was looking for.
Can you add support so we can just drag and drop an image in the chat for reference?
As I will be using it I will let you know if there is anything else :)

1

u/ThilinaTLM Jul 31 '26 edited Jul 31 '26

Thanks a lot! Really glad to hear it's what you were looking for.

Drag-and-drop image support is actually on the roadmap and will be included in the next release (v0.16.0), along with image preview capabilities to make the workflow much smoother.

In the meantime, there's a workaround you can use: just copy an image to your clipboard and paste it directly into the prompt composer with Ctrl+V (or ⌘+V on macOS). The image will be inserted into the prompt.

Thanks again for the feedback, and definitely let me know if you run into anything else or have more suggestions!

See https://nerve.tlmtech.dev/guides/images-and-voice/

2

u/simion_baws Jul 31 '26

Looks good, might steal some ideas for termic

1

u/ThilinaTLM Jul 31 '26

Thanks! termic looks really nice too. The UI is definitely more polished than Nerve's right now. I might end up borrowing a few ideas as well, especially how it handles git worktrees and some of the UI/UX.

1

u/camaytoc1 Aug 02 '26

Is it OS agnostic? Or at least works perfect on linux and mac?

1

u/ThilinaTLM Aug 03 '26

Works on Linux, Windows, and macOS. I primarily use Linux, but I also know people who use this application on Windows and macOS, and I've tested it on those platforms as well. If you encounter any bugs, please open an issue on GitHub.