A developer who goes by u/aqny just shipped Convey v0.1.0 on GitHub, and the interesting part isn’t the pane-switching trick. It’s what happens right before you hit send.
What’s New
Convey is a macOS TUI that collects input through a YAML-defined workflow, renders it as Markdown, and fires the result straight into a Ghostty or iTerm2 pane of your choice. According to the release, the use case that pushed the author to build it was Kubernetes debugging: every time you ask a coding agent to inspect a resource, you have to specify context, namespace, and resource name, and those values keep changing. Looking them up with kubectl and pasting them into a prompt, every single time, is the kind of task that quietly eats your afternoon.
Convey turns that lookup into a form. Define a workflow once in YAML, and at runtime it loads real candidate values straight from kubectl output. You pick from what’s actually there instead of typing from memory. The author built it after noticing the same five minutes vanishing into the same manual lookup, over and over, across different debugging sessions. That’s the kind of repetition that never shows up on a time-tracking report but adds up over a month of on-call shifts.
The YAML definitions themselves stay small. A field references a static list of choices, or it shells out to a command and treats the output as the candidate set. Nothing fancy, but it means the workflow file doubles as documentation. Anyone on the team can open it and see exactly what inputs a given prompt template expects, without reading through a wall of shell scripts first.
The Twist
Here’s the part worth pausing on. You could write a SKILL.md that tells an agent to ask the user for missing values before acting. But whether the model actually follows that instruction is still up to the model. Convey moves that guarantee out of the prompt and into the tool: it will not send anything until every required field is filled, and it puts focus back on whatever’s missing until you fill it. Decisions you don’t want to hand off to an LLM just… stay yours. That’s the leverage here: less prompt engineering, more prompt engineering.
This matters more than it sounds like on paper. Prompt instructions are suggestions the model weighs against everything else it’s been told. A form field with a validation check is not a suggestion. If the namespace field is empty, the send action is simply unavailable, no matter how confident the model feels about guessing. For anything touching production infrastructure, that distinction between “the model probably will ask” and “the tool literally can’t proceed” is the whole ballgame.
The Mini-Workflow
- 📝 Define your inputs in YAML:
selectfields for fixed choices,textareafor free text. - ⚙️ Point
selectcandidates at a static list or the stdout of a local command, like kubectl. - 🖥️ Launch Convey, search your open Ghostty/iTerm2 windows and tabs in a tree, and pick the destination pane.
- 🔗 Walk through the fields in sequence. Picking a context reloads the namespaces for it, picking a namespace reloads the resources. Everything downstream stays in sync.
- ⌨️ Type your actual request in the multiline field, then hit Ctrl+S. Convey renders everything through a Handlebars template into Markdown and sends it to the agent pane. The form resets itself, ready for the next prompt.
Because the Handlebars template sits between your inputs and the final Markdown, you can shape the exact phrasing the agent receives without retyping it each time. Change the template once, and every future prompt built from that workflow inherits the update. That’s a small detail, but it’s the difference between a tool you use twice and a tool that becomes part of your actual routine.
Pro Tip
If you’re running the same investigation prompt more than twice a week, that’s your signal to turn it into a Convey workflow instead of a saved snippet. A snippet still needs you to manually swap in the namespace and resource. A workflow does the swapping for you and refuses to fire until it’s actually correct, which is the whole point. Stack a few workflows for the queries you run most (pod status, recent events, log tails) and the tree view turns into something closer to a dashboard than a form.
Try It
It’s on Homebrew right now: brew install ynqa/tap/convey. Only Ghostty and iTerm2 on macOS for now, and the author’s asking for feedback on new input types and terminal integrations. If you’re juggling kubectl lookups before every agent prompt, this is worth ten minutes of your day.
Convey v0.1.0: A TUI for composing reusable prompts from YAML and sending them to another terminal pane
by u/aqny in PromptEngineering