# Show HN: Terminal-native prompt composer for power users running many agents

> Source: <https://github.com/oborchers/proqi>
> Published: 2026-09-04 05:46:10+00:00

`/pɹˈə͡ʊki/`

**The terminal-native prompt composer for power users running multiple coding agents.**

Serious prompting deserves more than a send box.

[Why Proqi](#do-you-hate-this-editor) ·
[Workflow](#one-board-many-prompts) ·
[Install](#install) ·
[Controls](#board-controls) ·
[Screenshots](#screenshot-inbox-on-macos) ·
[Herdr](#native-submission-with-herdr) ·
[CLI](#json-cli-and-agent-skill) ·
[Privacy](#privacy-durability-and-recovery) ·
[Configuration](#configuration)

**Proqi is a terminal-native power-user prompt composer that keeps every next
instruction, screenshot, and alternative as an independent, resumable thought—
ready to refine, reorder, copy, or send to the right coding agent without
interrupting its current work.**

**Not the agent.**

**The input field.**

Codex, 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.

An 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.

**Proqi is the solution: an agent-ready prompt editor on steroids, built for
power users.** Capture independently; edit, select, duplicate, reorder, recover,
and discover local skills and commands later.

On 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.

Every thought stays editable. Keep alternatives and choose the next submission only when ready.

- Keep working in your terminal while coding agents continue.
- Define each next work piece in Proqi—not in a live Codex or Claude input.
- Capture text and screenshots, then edit, annotate, select, and order them.
- Copy one thought, a range, or the whole board; or submit the ordered board to a verified adjacent agent through Herdr.

Proqi is a prompt composer—not a task manager, Markdown IDE, or agent harness.
Standalone work uses the clipboard. Native submission works **only** through
verified [Herdr](https://github.com/herdrdev/herdr), never arbitrary terminals,
agents, or multiplexers.

Homebrew is recommended:

```
brew install oborchers/tap/proqi
```

Scope Homebrew trust to this formula:

```
brew trust --formula oborchers/tap/proqi
brew upgrade --formula oborchers/tap/proqi
```

Or use Rust 1.88+:

```
cargo install proqi --locked
```

The [latest release](https://github.com/oborchers/proqi/releases/latest) has
checksummed macOS/Linux archives and an `amd64`

Debian package. Proqi never runs
`sudo`

, package managers, or updates implicitly. Uninstalling preserves data.

```
proqi                         # new board
proqi -c                      # latest inactive board here
proqi -r                      # searchable session browser
proqi -r <id-or-name>         # exact session
proqi sessions                # list and search
```

Run `proqi -c`

in the agent's project and its last board returns. No temporary
prompt files or unsaved Sublime scratch document.

Changes autosave; exit prints the resume command. Boards rename, trash, restore, and run in parallel; one lease prevents concurrent editing.

A genuinely empty board opens with `+ Start typing`

. Type or paste immediately
to create the first thought, or click the insertion row to reveal the ordinary
empty editor first. Nothing is saved until content is produced. Press `Esc`

to
use Board controls instead. Returning focus to the pane does not override that
Board choice.

`Primary`

means `Cmd`

on macOS and `Ctrl`

elsewhere. Proqi receives logical
modifiers only after the operating system and terminal have handled the key.

| Input | Action |
|---|---|
`n` , `Enter` on `+ New thought` , paste, or click |
Create a thought |
`Primary+V` with no selection |
Create from the clipboard |
`j` / `k` or arrows |
Focus next / previous; twice at a blocked bottom / top edge creates there |
`Enter` or `e` |
Edit |
`Primary+J` / `Primary+K` , `Primary+Shift+↓` / `↑` , or drag |
Reorder |
`Primary+C` / `y` ; `Primary+X` / `x` |
Copy; safe cut |
`d` or `Del` (`Entf` on German keyboards) |
Delete |
`Space` ; `Primary+A` / `a` |
Toggle selection; select all |
`Shift+↑` / `↓` or `K` / `J` ; `v` then move |
Extend or latch a range |
`Primary+D` |
Duplicate thought or selection |
`Primary+Enter` / `s` ; `Primary+Shift+Enter` / `S` ; then arrows or `h` / `j` / `k` / `l` if needed |
Submit and remove after acceptance; submit and keep |
`Primary+Z` / `u` |
Undo a board operation |
`Primary+Shift+Z` / `Primary+Y` |
Redo a board operation |
`c` ; `/` ; `:` ; `i` ; `?` |
Collapse; search; commands; Screenshot Inbox; help |
`Esc` ; `Primary+Q` / `q` |
Clear selection; exit after durable flush |

| Input | Action |
|---|---|
`Esc` |
Return to the board |
`Primary+A` ; `Primary+U` |
Select all; delete logical line |
`Primary+Shift+U` |
Delete containing sentence |
`Primary+Z` ; `Primary+Shift+Z` / `Primary+Y` |
Undo; redo |
`Primary+C` / `X` / `V` |
Native copy / safe cut / paste |
macOS: `Cmd+←` / `→` |
Move to the current wrapped visual-row start / end |
macOS: `Option+←` / `→` ; elsewhere: `Ctrl+←` / `→` |
Move by word |
`Shift` + movement |
Extend text selection |
macOS: `Cmd+Shift+←` / `→` |
Extend to the current wrapped visual-row start / end |
`Home` / `End` |
Move to the logical line boundary |
`Alt+↑` / `↓` or `Page Up` / `Page Down` ; `Primary+↑` / `↓` |
Jump five rows; thought start / end |
`Enter` ; `Tab` ; `Shift+Tab` |
Continue lists; nest; outdent |
`↑` / `↓` twice at a boundary |
Focus the adjacent thought, or create at the top / bottom board edge |
`Primary+Enter` ; `Primary+Shift+Enter` |
Submit and remove after acceptance; submit and keep |
Type `$name` , `/name` , or supported `@name` |
Complete a local invocation |
`↑` / `↓` or `Primary+P` / `Primary+N` ; `Enter` / `Tab` ; `Esc` |
Navigate, insert, or close invocation results |

Unmodified physical `Del`

is an invariant Board alias. Remapping the `delete`

character changes `d`

, not the physical key. Modified `Del`

is not a Board
command. In text editors and searchable query fields, `Del`

remains a
text-editing key, never a thought delete, and `h`

, `j`

, `k`

, and `l`

remain
literal text. List-only menus and four-way choosers ignore irrelevant modifiers
equally for arrows and their Vim-style aliases.

Standard Primary chords are the canonical commands across Board and Edit.
Configurable Board characters such as `y`

, `x`

, `u`

, `s`

, `S`

, and `q`

remain
portable aliases when a terminal consumes a system chord. Ghostty consumes
configured keybindings before Proqi receives input. Its macOS defaults include
the common macOS clipboard, selection, history, duplicate, submission, quit,
and Cmd-arrow chords, including `Cmd+Shift+V`

as a host paste action.
Proqi does not promise delivery of intercepted chords, change Ghostty settings,
or repeat a host paste. Use the Board aliases, command palette, bracketed paste,
and `proqi diagnostics keypress`

when a key does not reach the application.

Mouse input covers the same core workflow. Images, files, and large pastes fold
into compact annotations while their content stays intact. In Edit mode, an
unmodified `Space`

on one completely selected collapsed annotation inserts a
space immediately before it without replacing it. See
[invocation compatibility](/oborchers/proqi/blob/main/docs/INVOCATIONS.md).

Inside 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.

From `+ Start typing`

, press `Esc`

, then `i`

: new Desktop screenshots become
annotatable image thoughts. From an ordinary Board, press `i`

directly. Proqi
never takes, uploads, analyzes, copies, or configures them.

One process listens. It pauses after 10 unattended captures or 20 inactive minutes. Resume ignores the gap; failed imports require explicit retry.

macOS may request terminal **Files & Folders** access—not Screen Recording or
Accessibility. Linux reports macOS-only availability.

```
[screenshot_inbox]
# directory = "/absolute/path/to/an/isolated/inbox" # default: Desktop
capture_all_new_images = false
notify_terminal_on_auto_pause = false
```

In Herdr, Proqi finds verified adjacent agents. In Board mode, `s`

or
`Primary+Enter`

submits the selected thought or selection in visible order and
removes after acceptance; `S`

or `Primary+Shift+Enter`

keeps it. While editing,
the same Primary chords submit only the active thought. The palette submits the
whole board. With several verified adjacent agents, either edit
chord opens the temporary direction chooser; press an arrow or `h`

, `j`

, `k`

,
or `l`

next to choose the target. Those keys select a direction instead of
moving or inserting text while the chooser is open. `Esc`

cancels the chooser
and returns to the unchanged editor.

When an accepted submission removes the final thought, Proqi returns to the
passive `+ Start typing`

board. It does not create a replacement blank thought;
the next typed or pasted content creates the next thought directly.

Busy receivers decide whether input steers or queues. Any failed verification leaves the board unchanged.

Keep 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.

Proqi never invokes a shell, injects keys, reads chats, or waits. Herdr is optional.

Protocol 19 supports Claude Code, Codex, Pi, and Hermes.
[OpenCode](/oborchers/proqi/blob/main/context/harnesses/opencode.md) and [Kilo](/oborchers/proqi/blob/main/context/harnesses/kilo.md)
are conditional; Cline is deferred.

The CLI also exposes versioned JSON:

```
proqi --json capabilities
printf '%s' 'Review this.' | proqi --json thoughts add <session-id>
proqi --json thoughts send <source> <thought-id> <destination> --remove
```

The [Proqi skill](/oborchers/proqi/blob/main/skills/proqi/SKILL.md) uses it without scraping the TUI:

```
npx skills add oborchers/proqi --skill proqi -g --agent codex --agent claude-code
```

The skill does not install the Proqi executable. Run `capabilities`

first.

For read-only-first failure investigation:

```
npx skills add oborchers/proqi --skill proqi-debug -g
```

Thoughts, attachments, settings, and redacted logs stay local. No telemetry, cloud sync, collaboration service, or upload.

The footer reports durability. Failures block destructive exit and remain retryable/exportable. Editor and board history survive restart.

```
proqi doctor
proqi diagnostics collect --output proqi-diagnostics.json
```

Diagnostics are redacted and local; review before sharing. See
[SECURITY.md](/oborchers/proqi/blob/main/SECURITY.md). Disable content-free update checks with
`check_for_updates = false`

.
Collected update diagnostics include only closed lifecycle stages, aggregate
participant and replacement counts, stable failure codes, and convergence.
Finalization diagnostics distinguish unavailable control, unavailable private
cache state, and an exact-state mismatch without recording local identifiers.

Optional platform-native `config.toml`

:

```
check_for_updates = true
theme = "auto" # auto, light, dark, limited, or a bounded local theme file
density = "comfortable" # or compact
merge_separator = "\n\n" # one blank line between merged thoughts

[keybindings]
new = "n"
edit = "e"
delete = "d" # remaps the character only; physical Del remains available
submit_remove = "s"
submit_keep = "S"
undo = "u"
focus_up = "k"
focus_down = "j"
transform = "t" # merge selection; Esc,t splits or extracts the last editor range
screenshot_inbox = "i"
delete_sentence = "U" # Primary+Shift+U, use another unreserved uppercase suffix to remap
select_visual_row_start = "H" # Primary+Shift+H fallback
select_visual_row_end = "L" # Primary+Shift+L fallback
```

Thought transformations are contextual and remappable. In an editor, use
`Primary+T`

to split at the cursor, or to extract the
exact selection. `Esc`

, then `t`

, is the portable immediate fallback. On the
board, select two or more contiguous thoughts and press `t`

to merge them with
the configured exact separator. The command palette exposes all three actions
for keyboard and mouse discovery. If an older config already assigns plain `t`

to another board action, that established action keeps precedence and the
footer omits the shadowed board spelling until `transform`

is remapped. The
Primary chord and command-palette actions remain available. Bindings reserved
for established Primary shortcuts are rejected instead of silently disabling
the configured transformation chord.

Unsafe theme contrast is rejected. See the
[theme example](/oborchers/proqi/blob/main/docs/themes/proqi-dark.toml). Invocation roots stay local.
Sentence deletion uses a documented Unicode profile with unavoidable ambiguity.
See [sentence deletion](/oborchers/proqi/blob/main/docs/SENTENCE_DELETION.md).
Visual-row selection uses the current rendered width and folded presentation.
On macOS, Cmd plus horizontal arrows uses the current wrapped row and
Option retains word movement. Elsewhere, Ctrl plus horizontal arrows retains
word movement, including with Shift. If the terminal intercepts the macOS
Cmd-arrow selection chords, use the command palette or the configured
shifted Primary suffixes above.

Proqi supports macOS and x86-64 GNU/Linux; only the latest `0.x`

is supported.
It is an MIT-licensed binary. Contributors: [CONTRIBUTING.md](/oborchers/proqi/blob/main/CONTRIBUTING.md),
[PRODUCT.md](/oborchers/proqi/blob/main/context/PRODUCT.md), [ARCHITECTURE.md](/oborchers/proqi/blob/main/context/ARCHITECTURE.md).

```
cargo build --locked
cargo run --bin proqi
cargo xtask check # canonical local gate
```

The demos use the release binary; the assets gate checks dimensions, links, and privacy.
