Skip to content

Leaving it running ​

A run does not need your terminal. Close the window, lose the ssh connection, or /exit and press Detach and exit: the flow goes on taking its turns. Run hmz in the same directory and you are back in it.

At a glance

  • You will walk away from a long run and come back to it later, from the same terminal or another one.
  • Use it when a run will take longer than you want to sit and watch it, or your connection to the machine may drop.
  • You need a flow running in hmz, started as in Your first run.

Try it ​

While a flow runs, type /exit, press Detach and exit, and later, in the same directory:

sh
hmz

How it works ​

The run is not held by the hmz you are looking at. It is held on this machine, apart from the terminal, one run per directory, and hmz is a window onto it. Closing the window, on purpose or because the connection dropped, leaves the run where it was. Running hmz again in the same directory opens a new window onto the same run, and reads it from the top.

That has three consequences:

  • One run per directory. hmz in a directory always opens that directory's run. Another project has its own.
  • Several windows at once. A second terminal, or an ssh session from elsewhere, can open the same run while you still have it open. Each is a whole interface of its own. See Several people on one run.
  • The run lives on this machine. Your laptop can close; the machine running hmz cannot. A reboot ends the run.

Example: detach, then come back ​

Start a flow, as in Your first run. Then type /exit, or press ctrl+q, which asks the same thing:

/exitdrawn, not recorded
  ╭────────────────────────────────────────────────────────────────╮
  │                                                                │
  │  A flow is running.                                            │
  │  Detached, it keeps running: run `hmz` here to reattach.       │
  │                                                                │
  │  Stop the flow and exit   Detach and exit                      │ 1
  │                                                                │
  │  enter stop   esc stay                                         │
  │                                                                │
  ╰────────────────────────────────────────────────────────────────╯
  1. Detach and exit, and the line under the question, are only there where the run can outlive the terminal. Where it cannot, the button in its place is Cancel; see below.

Stop the flow and exit has the focus as the box opens. Press → to move to Detach and exit, then enter, or click it. Your shell comes back, and the flow is still going.

Later, from any terminal on the same machine:

sh
cd ~/tmp/humanize-demo
hmz
hmz · ralph_loopdrawn, not recorded
❯ Fix the bug in calc.py. · by you@tui1
── agent
● agent is working
● Found the bug: add() subtracts. Fixing it now.
✻ Worked for 7s · agent
● agent is working · conversation 2 of 22
agent · claude/claude-haiku-4-5-20251001:high · ● 2
$0.05 · 151 out/s
❯
·/· agent… (24s · ctrl+c twice to stop)3/ commands · shift+enter newline · ← monitor · ctrl+c stop

A new interface on the same run, read from the top. Everything the run did while you were away is here.

What to look at, by number:

  1. Your task, marked · by you@tui. The new window reads the run from its first line, so everything said to it is there. A line typed in another window, the one you left included, is marked with who typed it.
  2. The rounds you missed. A Ralph loop kept opening a conversation a round. Here it is on its second, and the first one's work is above it.
  3. The status line. Still running, with the clock of the turn in progress, and ctrl+c stop as the last key: this window can stop the run as well as the one you left.

Check it worked ​

  • After Detach and exit, the shell prompt comes back at once, with no stopping line.
  • hmz in the same directory opens on the flow, still working, and not on a fresh chat.
  • The transcript holds turns that happened while you were gone.

Before you walk away ​

  • Say you are away. A flow that asks you something waits for an answer. Type /afk on before you go, and it is answered with nothing instead: away stays said after you have left. A role you claimed is anybody's to answer once you leave. See Being away.
  • Give it a budget you can live with. Nobody is watching the spend. See Every run has a budget.
  • Know how to stop it later. Open it with hmz, then press ctrl+c twice or type /stop. That stops it for everybody reading it. ctrl+c never leaves a run behind. See Stopping.

Variations ​

  • Just close the window. Closing the terminal or losing the connection does what Detach and exit does. /exit only asks so that you choose on purpose.
  • Watch from two places. Leave one hmz open and run another in the same directory, over ssh for example. Leaving one leaves the others reading it.
  • Nobody watching at all. A run with no one at any window belongs on a command line: see Run it unattended.

When it can't be left running ​

Then the interface holds the run in its own process, and closing the terminal ends the run. /exit offers Cancel in place of Detach and exit. That happens when:

  • stdin or stdout is not a terminal: output redirected to a file, or input from a pipe;

  • HUMANIZE_DAEMON is off, 0 or no, for a machine where a run should end with its window:

    sh
    HUMANIZE_DAEMON=off hmz
  • humanize could not set it up, which it says as it opens: hmz: runs cannot be detached from the terminal (…), so they will run in this process instead.

Troubleshooting ​

hmz opened on an idle prompt, not on my run ​

You are in another directory. A run belongs to the directory it was started in: cd there and run hmz again.

The run was gone when I came back ​

The machine was restarted, or the run ended by itself: its budget was spent, or the flow finished. /epics lists it with how it ended. A flow that can be picked up carries on with /resume; see Picking a run up.

It was waiting for me the whole time ​

A question was put to you and nobody answered. Turn /afk on before you leave.

/exit offers Cancel instead of Detach and exit ​

The run cannot outlive this terminal. See When it can't be left running.

Next steps ​

Released under the Apache-2.0 licence.