{"slug": "show-hn-terminal-native-prompt-composer-for-power-users-running-many-agents", "title": "Show HN: Terminal-native prompt composer for power users running many agents", "summary": "Proqi, a terminal-native prompt composer for power users running multiple coding agents, has been released via Homebrew and Cargo, offering independent, resumable prompt editing and clipboard-based submission to agents like Codex and Claude Code. The tool, built by developer oborchers, supports macOS and Linux, includes a Screenshot Inbox on macOS, and integrates natively only with the verified Herdr agent harness to prevent accidental prompt concatenation.", "body_md": "`/pɹˈə͡ʊki/`\n\n**The terminal-native prompt composer for power users running multiple coding agents.**\n\nSerious prompting deserves more than a send box.\n\n[Why Proqi](#do-you-hate-this-editor) ·\n[Workflow](#one-board-many-prompts) ·\n[Install](#install) ·\n[Controls](#board-controls) ·\n[Screenshots](#screenshot-inbox-on-macos) ·\n[Herdr](#native-submission-with-herdr) ·\n[CLI](#json-cli-and-agent-skill) ·\n[Privacy](#privacy-durability-and-recovery) ·\n[Configuration](#configuration)\n\n**Proqi is a terminal-native power-user prompt composer that keeps every next\ninstruction, screenshot, and alternative as an independent, resumable thought—\nready to refine, reorder, copy, or send to the right coding agent without\ninterrupting its current work.**\n\n**Not the agent.**\n\n**The input field.**\n\nCodex, Claude Code, and similar CLI harnesses are excellent. Their input still belongs to one live stream. Draft the next prompt there and an agent question or wrong turn forces you to cut it out, clear the field, steer, and paste it back. Alternatives, later prompts, and screenshots spill into temporary files.\n\nAn unsent harness draft is not isolated from other senders either. If another agent submits through Herdr while text is waiting in that input field, the harness can concatenate both independent instructions and submit them as one accidental prompt. What looked like a safe draft becomes part of another agent's message without a distinct turn boundary.\n\n**Proqi is the solution: an agent-ready prompt editor on steroids, built for\npower users.** Capture independently; edit, select, duplicate, reorder, recover,\nand discover local skills and commands later.\n\nOn macOS, the same board becomes a Screenshot Inbox. Captures arrive as private, annotatable thoughts: no dragging across panes and no accidental drop into the agent.\n\nEvery thought stays editable. Keep alternatives and choose the next submission only when ready.\n\n- Keep working in your terminal while coding agents continue.\n- Define each next work piece in Proqi—not in a live Codex or Claude input.\n- Capture text and screenshots, then edit, annotate, select, and order them.\n- Copy one thought, a range, or the whole board; or submit the ordered board to a verified adjacent agent through Herdr.\n\nProqi is a prompt composer—not a task manager, Markdown IDE, or agent harness.\nStandalone work uses the clipboard. Native submission works **only** through\nverified [Herdr](https://github.com/herdrdev/herdr), never arbitrary terminals,\nagents, or multiplexers.\n\nHomebrew is recommended:\n\n```\nbrew install oborchers/tap/proqi\n```\n\nScope Homebrew trust to this formula:\n\n```\nbrew trust --formula oborchers/tap/proqi\nbrew upgrade --formula oborchers/tap/proqi\n```\n\nOr use Rust 1.88+:\n\n```\ncargo install proqi --locked\n```\n\nThe [latest release](https://github.com/oborchers/proqi/releases/latest) has\nchecksummed macOS/Linux archives and an `amd64`\n\nDebian package. Proqi never runs\n`sudo`\n\n, package managers, or updates implicitly. Uninstalling preserves data.\n\n```\nproqi                         # new board\nproqi -c                      # latest inactive board here\nproqi -r                      # searchable session browser\nproqi -r <id-or-name>         # exact session\nproqi sessions                # list and search\n```\n\nRun `proqi -c`\n\nin the agent's project and its last board returns. No temporary\nprompt files or unsaved Sublime scratch document.\n\nChanges autosave; exit prints the resume command. Boards rename, trash, restore, and run in parallel; one lease prevents concurrent editing.\n\nA genuinely empty board opens with `+ Start typing`\n\n. Type or paste immediately\nto create the first thought, or click the insertion row to reveal the ordinary\nempty editor first. Nothing is saved until content is produced. Press `Esc`\n\nto\nuse Board controls instead. Returning focus to the pane does not override that\nBoard choice.\n\n`Primary`\n\nmeans `Cmd`\n\non macOS and `Ctrl`\n\nelsewhere. Proqi receives logical\nmodifiers only after the operating system and terminal have handled the key.\n\n| Input | Action |\n|---|---|\n`n` , `Enter` on `+ New thought` , paste, or click |\nCreate a thought |\n`Primary+V` with no selection |\nCreate from the clipboard |\n`j` / `k` or arrows |\nFocus next / previous; twice at a blocked bottom / top edge creates there |\n`Enter` or `e` |\nEdit |\n`Primary+J` / `Primary+K` , `Primary+Shift+↓` / `↑` , or drag |\nReorder |\n`Primary+C` / `y` ; `Primary+X` / `x` |\nCopy; safe cut |\n`d` or `Del` (`Entf` on German keyboards) |\nDelete |\n`Space` ; `Primary+A` / `a` |\nToggle selection; select all |\n`Shift+↑` / `↓` or `K` / `J` ; `v` then move |\nExtend or latch a range |\n`Primary+D` |\nDuplicate thought or selection |\n`Primary+Enter` / `s` ; `Primary+Shift+Enter` / `S` ; then arrows or `h` / `j` / `k` / `l` if needed |\nSubmit and remove after acceptance; submit and keep |\n`Primary+Z` / `u` |\nUndo a board operation |\n`Primary+Shift+Z` / `Primary+Y` |\nRedo a board operation |\n`c` ; `/` ; `:` ; `i` ; `?` |\nCollapse; search; commands; Screenshot Inbox; help |\n`Esc` ; `Primary+Q` / `q` |\nClear selection; exit after durable flush |\n\n| Input | Action |\n|---|---|\n`Esc` |\nReturn to the board |\n`Primary+A` ; `Primary+U` |\nSelect all; delete logical line |\n`Primary+Shift+U` |\nDelete containing sentence |\n`Primary+Z` ; `Primary+Shift+Z` / `Primary+Y` |\nUndo; redo |\n`Primary+C` / `X` / `V` |\nNative copy / safe cut / paste |\nmacOS: `Cmd+←` / `→` |\nMove to the current wrapped visual-row start / end |\nmacOS: `Option+←` / `→` ; elsewhere: `Ctrl+←` / `→` |\nMove by word |\n`Shift` + movement |\nExtend text selection |\nmacOS: `Cmd+Shift+←` / `→` |\nExtend to the current wrapped visual-row start / end |\n`Home` / `End` |\nMove to the logical line boundary |\n`Alt+↑` / `↓` or `Page Up` / `Page Down` ; `Primary+↑` / `↓` |\nJump five rows; thought start / end |\n`Enter` ; `Tab` ; `Shift+Tab` |\nContinue lists; nest; outdent |\n`↑` / `↓` twice at a boundary |\nFocus the adjacent thought, or create at the top / bottom board edge |\n`Primary+Enter` ; `Primary+Shift+Enter` |\nSubmit and remove after acceptance; submit and keep |\nType `$name` , `/name` , or supported `@name` |\nComplete a local invocation |\n`↑` / `↓` or `Primary+P` / `Primary+N` ; `Enter` / `Tab` ; `Esc` |\nNavigate, insert, or close invocation results |\n\nUnmodified physical `Del`\n\nis an invariant Board alias. Remapping the `delete`\n\ncharacter changes `d`\n\n, not the physical key. Modified `Del`\n\nis not a Board\ncommand. In text editors and searchable query fields, `Del`\n\nremains a\ntext-editing key, never a thought delete, and `h`\n\n, `j`\n\n, `k`\n\n, and `l`\n\nremain\nliteral text. List-only menus and four-way choosers ignore irrelevant modifiers\nequally for arrows and their Vim-style aliases.\n\nStandard Primary chords are the canonical commands across Board and Edit.\nConfigurable Board characters such as `y`\n\n, `x`\n\n, `u`\n\n, `s`\n\n, `S`\n\n, and `q`\n\nremain\nportable aliases when a terminal consumes a system chord. Ghostty consumes\nconfigured keybindings before Proqi receives input. Its macOS defaults include\nthe common macOS clipboard, selection, history, duplicate, submission, quit,\nand Cmd-arrow chords, including `Cmd+Shift+V`\n\nas a host paste action.\nProqi does not promise delivery of intercepted chords, change Ghostty settings,\nor repeat a host paste. Use the Board aliases, command palette, bracketed paste,\nand `proqi diagnostics keypress`\n\nwhen a key does not reach the application.\n\nMouse input covers the same core workflow. Images, files, and large pastes fold\ninto compact annotations while their content stays intact. In Edit mode, an\nunmodified `Space`\n\non one completely selected collapsed annotation inserts a\nspace immediately before it without replacing it. See\n[invocation compatibility](/oborchers/proqi/blob/main/docs/INVOCATIONS.md).\n\nInside Herdr, opening the same invocation picker also discovers recognized live coding agents across the server. Selecting one inserts an inert collaborator location and displays it as a compact inline mention. It never focuses or submits to that agent.\n\nFrom `+ Start typing`\n\n, press `Esc`\n\n, then `i`\n\n: new Desktop screenshots become\nannotatable image thoughts. From an ordinary Board, press `i`\n\ndirectly. Proqi\nnever takes, uploads, analyzes, copies, or configures them.\n\nOne process listens. It pauses after 10 unattended captures or 20 inactive minutes. Resume ignores the gap; failed imports require explicit retry.\n\nmacOS may request terminal **Files & Folders** access—not Screen Recording or\nAccessibility. Linux reports macOS-only availability.\n\n```\n[screenshot_inbox]\n# directory = \"/absolute/path/to/an/isolated/inbox\" # default: Desktop\ncapture_all_new_images = false\nnotify_terminal_on_auto_pause = false\n```\n\nIn Herdr, Proqi finds verified adjacent agents. In Board mode, `s`\n\nor\n`Primary+Enter`\n\nsubmits the selected thought or selection in visible order and\nremoves after acceptance; `S`\n\nor `Primary+Shift+Enter`\n\nkeeps it. While editing,\nthe same Primary chords submit only the active thought. The palette submits the\nwhole board. With several verified adjacent agents, either edit\nchord opens the temporary direction chooser; press an arrow or `h`\n\n, `j`\n\n, `k`\n\n,\nor `l`\n\nnext to choose the target. Those keys select a direction instead of\nmoving or inserting text while the chooser is open. `Esc`\n\ncancels the chooser\nand returns to the unchanged editor.\n\nWhen an accepted submission removes the final thought, Proqi returns to the\npassive `+ Start typing`\n\nboard. It does not create a replacement blank thought;\nthe next typed or pasted content creates the next thought directly.\n\nBusy receivers decide whether input steers or queues. Any failed verification leaves the board unchanged.\n\nKeep deferred prompts in Proqi rather than in the native harness input when other senders can target that agent. When two submissions overlap, the harness may not keep them in separate turns, so text already waiting in its input can merge with an incoming message. Proqi preserves its verified submission flow, but it cannot separate content after the receiving harness has combined it.\n\nProqi never invokes a shell, injects keys, reads chats, or waits. Herdr is optional.\n\nProtocol 19 supports Claude Code, Codex, Pi, and Hermes.\n[OpenCode](/oborchers/proqi/blob/main/context/harnesses/opencode.md) and [Kilo](/oborchers/proqi/blob/main/context/harnesses/kilo.md)\nare conditional; Cline is deferred.\n\nThe CLI also exposes versioned JSON:\n\n```\nproqi --json capabilities\nprintf '%s' 'Review this.' | proqi --json thoughts add <session-id>\nproqi --json thoughts send <source> <thought-id> <destination> --remove\n```\n\nThe [Proqi skill](/oborchers/proqi/blob/main/skills/proqi/SKILL.md) uses it without scraping the TUI:\n\n```\nnpx skills add oborchers/proqi --skill proqi -g --agent codex --agent claude-code\n```\n\nThe skill does not install the Proqi executable. Run `capabilities`\n\nfirst.\n\nFor read-only-first failure investigation:\n\n```\nnpx skills add oborchers/proqi --skill proqi-debug -g\n```\n\nThoughts, attachments, settings, and redacted logs stay local. No telemetry, cloud sync, collaboration service, or upload.\n\nThe footer reports durability. Failures block destructive exit and remain retryable/exportable. Editor and board history survive restart.\n\n```\nproqi doctor\nproqi diagnostics collect --output proqi-diagnostics.json\n```\n\nDiagnostics are redacted and local; review before sharing. See\n[SECURITY.md](/oborchers/proqi/blob/main/SECURITY.md). Disable content-free update checks with\n`check_for_updates = false`\n\n.\nCollected update diagnostics include only closed lifecycle stages, aggregate\nparticipant and replacement counts, stable failure codes, and convergence.\nFinalization diagnostics distinguish unavailable control, unavailable private\ncache state, and an exact-state mismatch without recording local identifiers.\n\nOptional platform-native `config.toml`\n\n:\n\n```\ncheck_for_updates = true\ntheme = \"auto\" # auto, light, dark, limited, or a bounded local theme file\ndensity = \"comfortable\" # or compact\nmerge_separator = \"\\n\\n\" # one blank line between merged thoughts\n\n[keybindings]\nnew = \"n\"\nedit = \"e\"\ndelete = \"d\" # remaps the character only; physical Del remains available\nsubmit_remove = \"s\"\nsubmit_keep = \"S\"\nundo = \"u\"\nfocus_up = \"k\"\nfocus_down = \"j\"\ntransform = \"t\" # merge selection; Esc,t splits or extracts the last editor range\nscreenshot_inbox = \"i\"\ndelete_sentence = \"U\" # Primary+Shift+U, use another unreserved uppercase suffix to remap\nselect_visual_row_start = \"H\" # Primary+Shift+H fallback\nselect_visual_row_end = \"L\" # Primary+Shift+L fallback\n```\n\nThought transformations are contextual and remappable. In an editor, use\n`Primary+T`\n\nto split at the cursor, or to extract the\nexact selection. `Esc`\n\n, then `t`\n\n, is the portable immediate fallback. On the\nboard, select two or more contiguous thoughts and press `t`\n\nto merge them with\nthe configured exact separator. The command palette exposes all three actions\nfor keyboard and mouse discovery. If an older config already assigns plain `t`\n\nto another board action, that established action keeps precedence and the\nfooter omits the shadowed board spelling until `transform`\n\nis remapped. The\nPrimary chord and command-palette actions remain available. Bindings reserved\nfor established Primary shortcuts are rejected instead of silently disabling\nthe configured transformation chord.\n\nUnsafe theme contrast is rejected. See the\n[theme example](/oborchers/proqi/blob/main/docs/themes/proqi-dark.toml). Invocation roots stay local.\nSentence deletion uses a documented Unicode profile with unavoidable ambiguity.\nSee [sentence deletion](/oborchers/proqi/blob/main/docs/SENTENCE_DELETION.md).\nVisual-row selection uses the current rendered width and folded presentation.\nOn macOS, Cmd plus horizontal arrows uses the current wrapped row and\nOption retains word movement. Elsewhere, Ctrl plus horizontal arrows retains\nword movement, including with Shift. If the terminal intercepts the macOS\nCmd-arrow selection chords, use the command palette or the configured\nshifted Primary suffixes above.\n\nProqi supports macOS and x86-64 GNU/Linux; only the latest `0.x`\n\nis supported.\nIt is an MIT-licensed binary. Contributors: [CONTRIBUTING.md](/oborchers/proqi/blob/main/CONTRIBUTING.md),\n[PRODUCT.md](/oborchers/proqi/blob/main/context/PRODUCT.md), [ARCHITECTURE.md](/oborchers/proqi/blob/main/context/ARCHITECTURE.md).\n\n```\ncargo build --locked\ncargo run --bin proqi\ncargo xtask check # canonical local gate\n```\n\nThe demos use the release binary; the assets gate checks dimensions, links, and privacy.", "url": "https://wpnews.pro/news/show-hn-terminal-native-prompt-composer-for-power-users-running-many-agents", "canonical_source": "https://github.com/oborchers/proqi", "published_at": "2026-09-04 05:46:10+00:00", "updated_at": "2026-09-04 06:22:51.639571+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["Proqi", "oborchers", "Herdr", "Codex", "Claude Code", "Homebrew", "Cargo"], "alternates": {"html": "https://wpnews.pro/news/show-hn-terminal-native-prompt-composer-for-power-users-running-many-agents", "markdown": "https://wpnews.pro/news/show-hn-terminal-native-prompt-composer-for-power-users-running-many-agents.md", "text": "https://wpnews.pro/news/show-hn-terminal-native-prompt-composer-for-power-users-running-many-agents.txt", "jsonld": "https://wpnews.pro/news/show-hn-terminal-native-prompt-composer-for-power-users-running-many-agents.jsonld"}}