DEV Community

WIO
WIO

Posted on

Herdr’s terminal UI gets the job done. Shepi makes it a pleasure on your Mac.

Website: shepi.app

When several AI coding agents are working at once, the challenge is not just giving them tasks. One is changing an API locally, another is checking tests, and a third is processing data on a server. You keep returning to terminals to find out who is still working and who is waiting for you.

I built Shepi, a native Mac client for Herdr. It shares the same spaces, tabs, and agents with the Herdr TUI in real time, and supports Simplified Chinese, English, and Japanese. It does not create a separate set of desktop sessions or require you to migrate your work. Herdr keeps your AI coding agents' terminal sessions running; Shepi gives them a desktop home, with a clear place for tasks, progress, results, and the moments that need you.

01 · Your existing terminal sessions are already there

Shepi and the Herdr TUI connect to the same Herdr server, sharing the same spaces, tabs, and agents in real time. Sessions started in your terminal appear directly in Shepi; sessions started in Shepi are visible in the terminal too. You can use both at once. There is no migration, no copied session, and no separate runtime of sessions just for the desktop interface.

Claude Code, Codex, OpenCode, Gemini CLI, Cursor, and Copilot CLI still run in full, real terminals. A spinner means working, an empty ring means idle, and states have words as well. The pane receiving your input is the lighter card. Open the desktop window when you want it, return to the TUI when you prefer: it is the same work.

The Shepi window: the sidebar of spaces and agents on the left, tabs at the top, three panes, and the status line at the bottom.

Spaces, agent states, and real terminals in one window. (original image from the Guide)

02 · Know when you are needed, without making the rounds

When an agent pauses for confirmation—for example, before deploying, deleting, or installing—amber appears in the sidebar, pane header, and status line. When the agent provides details of the operation, you can see what it wants to run. A banner still reaches you with the sidebar folded away. In another app, a macOS notification tells you which agent stopped and how long it worked; clicking Review takes you back. Sounds follow Herdr's own notification timing, including agents on remote machines. I want you to be able to concentrate elsewhere, rather than watch output and wait.

The task that needs you stands out. (original video from the Guide)

03 · Get the context and options before making a decision

When you ask it to, an agent can send a question card with context, options, and what each option does. From any pane, you can choose an answer or write your own; it goes straight back to the right agent. The agent can also open a page, report progress under its name, or open test and log panes on any side of itself. Those panes are marked as its own and do not take your keyboard focus. Remote agents can do the same. Questions and checks stay beside the work, instead of becoming things to hunt for in long terminal output.

claude asks: Deploy to staging?, with what is going on, three answers each saying what it does with Deploy marked Suggested, and a field to write your own, in the card at the top right of the window; the claude pane glows amber.

Understand the situation, then choose the next step—or write your own answer. (original image from the Guide)

04 · Finish one job, then hand the next one over clearly

Some work makes sense in separate stages. When an agent finishes, it can leave a handoff prompt, close its current pane, and have a fresh agent take on the next task in the same place. You can also schedule work for later, or for when another agent finishes. The schedule runs on the machine and continues with Shepi closed; when something needs you, it stops and waits. What I want to provide is a clear point of continuation, not an assumption that development no longer needs human judgment.

05 · Come back knowing which step it is on

“Still working” is not much of a progress report. Agents can keep their plans in Shepi, with the current step under their name and total working time beside their state. Hover over that step or click it to see the full list, a progress bar, the current item, and how long each step took. Close the window and open it again: that progress is still there. You can understand where the work stands before deciding whether to read the full output.

The sidebar: spaces with branches and agent badges, and agents with their marks, how long each has worked and its current step; one agent's task card open beside it, at step 3 of 4.

The current step stays in the sidebar; expand it for the full plan and timings. (original image from the Guide)

06 · Don't just hear “done”—look at the changes

When checking results, I want to compare the code, not just read an agent's summary. Shepi shows uncommitted changes since the last commit in local and remote projects. Open the diff from the status line, or with the prefix followed by d, and read it side by side or in one column. Press Esc to return to your pane. This is a view of the changes, not a place that stages or edits code; what happens next stays part of your own workflow.

The diff view: changed files on the left, the changes on the right.

Compare the agent's explanation with the actual changes. (original image from the Guide)

07 · Bring remote machines into the same view

If your tasks run on a server, add the machine over SSH directly in Shepi, using your existing keys. Enter its host and Herdr connects it. The machine joins the sidebar under its own header, with its spaces and agents below. Every space counts agents that need you, are working, are done, or are idle. Changing a page locally while processing data remotely should not mean managing another collection of windows just because the machine is different.

The Add a machine sheet over the window.

Add an SSH machine in the app and see its work alongside local tasks. (original image from the Guide)

08 · Keep a shell beside the agent, ready to use

After an agent changes an API, you may want to run the tests yourself. While investigating a problem, you may need a live log. Shepi can split out a real shell beside or below the agent, so you can run tests, tail logs, or open a PR from the command line next to the task. The new pane grows into the existing layout. There is no need to find another terminal window or put your own checking commands into the agent's input stream. Working together should make room for taking the keyboard, not just watching.

A real shell beside the agent leaves room for your own checks. (original video from the Guide)

09 · Know who you are typing to

With several agents side by side, sending input to the wrong place is more distracting than missing a line of output. Shepi marks the active pane with a lighter card. It is the only pane with a blinking cursor, and its header names the agent. Other panes keep their full brightness when unfocused, so their output remains easy to compare. Click to move, or use the prefix followed by h, j, k, or l to reach a neighbour. Where your attention goes and where your keys go should agree.

Shepi window: the brighter pane is where your input goes.

10 · Give a messy layout equal room again

After a few splits and moves, panes naturally end up in different sizes. Sometimes you do not need carefully chosen proportions—you just want every task to have a reasonable amount of reading space again. The prefix followed by = gives every pane in the current tab equal room, whatever splitting or resizing came before. I want tidying the window to be a quick gesture, rather than another layout project competing with the work itself.

11 · Enlarge the current problem without losing your place

To read a long log or concentrate on one agent's result, use the prefix followed by z to let that pane fill the window, with its text holding still. The other panes wait behind it; they have not been closed. Corner marks, the tab, and the pane header remind you that you are zoomed. The same key, or a click to restore, brings back your layout. A moment of focus should not require dismantling the workspace and putting everything back afterward.

Zoom the current pane while the others remain behind it (original video from the Guide)

12 · Let a macro handle repeated input—and wait

Switching models, restarting a dev server, or entering a sequence of commands can become one macro. It does more than type characters continuously: it can wait for the previous step to appear on screen before continuing, such as waiting for a model menu before moving and confirming. Ask the current agent to write it, try it, and tell you its key; ask it to change, list, or delete macros too. Or write one yourself in Settings. It works locally and remotely, taking care of clearly defined repetition so you can keep your attention on decisions.

A macro runs the repeated input in the current pane (original video from the Guide)

13 · Check the page it built, right beside it

Ask an agent to show its page and it can open beside the terminal, whether served locally or from a remote machine. Interact with it directly, with Back, Forward, Reload, and Open in Browser available in the header. Shepi's prefix still works when the cursor is inside a page's input field; Esc hands keyboard control back to the window. Checking a page and returning to terminal work should not require searching for where each one lives in another app.

An agent opened its dev server's page in a pane beside it.

Keep the dev server and its page side by side to check the result. (original image from the Guide)

14 · Move related work together while terminals keep running

A log belongs near the agent investigating the problem; tests may need a better place for comparison. Drag a pane by its header and preview the result before dropping: swap two panes, or place one above, below, to the left, or to the right of another. Drop onto another tab to move it there, hover over the tab to place it precisely, or drop on + to give it a tab of its own. The terminal keeps running throughout. Rearranging the workspace need not interrupt the work.

Rearrange panes to suit the work. (original video from the Guide)

15 · A little of what you remember is enough to find it

You do not always remember which machine or space holds a task. Shepi's unified search covers machines, spaces, agents, panes, and recent output, both local and over SSH. Type a word or two, combine terms in any order, then press Return to enter the result. Whether you remember a task name or a line of output you just saw, a small clue can bring you back to the work.

Find open with a query, results grouped by kind.

Find task locations and clues in output from the same search. (original image from the Guide)

16 · Return to where you just were

Sometimes you do not need a full search. You only stepped away for a moment and want the previous pane. Cmd E lists recently used panes across machines, newest first, with the one you just left selected by default. Press Return and you are back. You can also type to search the list, just as in Find. With several interleaved tasks, a small shortcut makes temporary detours more direct, without having to identify the right sidebar entry or tab all over again.

Return through the recent-panes list (original video from the Guide)

17 · What you missed waits in the inbox

When Shepi is open and you step away, you will not see every notification as it happens. Agents that finish, need your intervention, or ask a question meanwhile leave events in the inbox beside Find, with a count on the Dock icon too. Click an event to go straight to its pane; the reminder clears only after you look at that pane. I want coming back to leave a trail you can follow: pick up what is waiting instead of checking every terminal and guessing what happened.

The inbox under the tray button, listing agents that needed you or finished while you weren't looking.

Missed events stay here for you to pick up when you return. (original image from the Guide)

18 · Close the window; the work still has a home

Quitting Shepi, closing its window, or closing the Herdr TUI does not stop agents on the underlying server. Tasks on remote servers keep running while this Mac sleeps. Open Shepi again and return to your previous workspace. If the connection was lost, the status line tells you how many panes changed in the meantime. The window is an entry point, not a condition for the work to exist. You can leave and come back to continue.

Shepi inherits Herdr's prefix and keybindings, with Control-B as the default, and supports the mouse too. I want to preserve the directness of the terminal while making multitasking, remote connections, and the moments that need a person clearer. If you regularly use several AI coding agents or move between a Mac and servers, that is the workflow I am building for.

The whole app supports Simplified Chinese, English, and Japanese. It can follow your Mac's language, or you can choose one in Settings; the change takes effect immediately without a restart. Menus, Settings, question cards, messages, and notifications are translated, while terminal agents, commands, and output stay as they are. The website and Guide are available in the same three languages, so the documentation and interface can speak the same language.

Shepi requires macOS 15 or later and Herdr 0.9.3 or later, and supports Apple silicon and Intel Macs. It is my independent product, not an official Herdr app.

Top comments (0)