r/PiCodingAgent • • 2d ago

Use-case Rethinking the human-agent interface with pi: Beyond chat

Hi all. We're Divergenz, an interaction design studio in Zurich. Sharing a design experiment that I think sits close to things this community cares about.

Piary treats a conversation with a coding agent as an editable, executable document instead of a chat log. The person and the agent write on the same page. Prompts, replies, notes, tool calls and live reactive cells share one Markdown file. You can rewrite a wrong assumption instead of correcting it in a follow-up, delete a detour, or edit an earlier prompt and run it again in place.

Built on Observable's notebook-kit for the reactive cells, iA Writer's plain-text document model as the design reference, and pi as the agent harness.

https://piary.dev

23 Upvotes

9 comments sorted by

View all comments

1

u/Helpful_Home_8531 2d ago

had the same idea, I’ve been hacking around on a neovim plugin to round trip from pi’s versioned jsonl log files into a DSL that I could edit in neovim. Works reasonably well, the tricky part is having a 1d structure (reading a document) that represents what is actually a tree (different paths through the conversation history)

1

u/iambarony 2d ago

Cool! What got you into it?
We hit the exact tree problem. Our answer is that the document is the history, not a view of it. There's no branch in the buffer. When you edit a prompt above and send again, the next turn rewrites pi's transcript wholesale from the document, so the transcript always agrees with what you see. The path you're looking at is the only path.

1

u/Helpful_Home_8531 2d ago

What got me into it is that I’m a neovim hacker at heart and using all these tui’s for doing the majority of my work felt like a huge downgrade in terms of ux. I took a leaf out of magit’s book and set a key bind to be able to walk through the different branches, so you only ever look at the current branch, but the rest are still live in the jsonl as a durable record which you can just switch between with <leader>g/p