Fieldwork / 16 October 2026
We left a counter running.
Then came back.
A small native experiment behind the pictures. The website shows recorded results; it does not run Herdr or inspect your machine.
HERDR 0.9.5
macOS · ARM64
ONE LOCAL RUN
What we actually ran
We downloaded the official Apple silicon binary for Herdr 0.9.5 and matched its published SHA-256. A temporary configuration and a named proof session kept the experiment separate from personal sessions. The panes used a non-login shell. No account, plugin, model or remote host was connected.
The program below writes its process ID and a sequence number to heartbeat.jsonl. That file lets us observe progress while no client is attached. It also prints the same values in the terminal.
import os, time, pathlib
p = pathlib.Path("heartbeat.jsonl")
i = 0
while True:
i += 1
with p.open("a") as f:
f.write(f"{os.getpid()} {i}\n")
print("heartbeat", os.getpid(), i, flush=True)
time.sleep(0.25)Download the original heartbeat program · Observed results as JSON
What changed
6 → 13 lines. The same process kept appending after the detach shortcut closed our only client. Reattaching showed the same terminal identity and PID.
Ctrl+C → no new lines. The heartbeat stopped; the pane remained. Explicitly running the command again started PID 94881 instead of 94795.
Stop → restart → 2 panes. Both restored panes used the same directory as before. Their terminal identities were new. The heartbeat file stayed at its stopped length.
Fifteen assertions passed, including the detach checks repeated at three points. They are checks on this run, not fifteen independent environments.
Repeat with disposable work
- Create an empty test directory, save the heartbeat program there, and start a new named session:
herdr --session exit-practice. Use a name that is not already in use. - Inside the pane, change to that directory and run
python3 -u heartbeat.py. Leave it a moment to write a few lines. - Press Ctrl+B, release, then q. From your ordinary shell, read the last line of
heartbeat.jsonltwice with a short gap. A larger counter under the same PID is evidence of ongoing progress. - Run
herdr --session exit-practiceagain. Observe the continuing output. Press Ctrl+C to stop this test program. - For the restart comparison, run the test program again, add a second empty pane, and detach. Save anything else before stopping the test session with
herdr session stop exit-practice. - Open
herdr --session exit-practiceagain. Compare the layout and directory with the heartbeat file. Our file did not keep growing. Finish by stopping this disposable session.
Use only the test session and directory you created. The sample appends to its local file until interrupted; remove your test files when you no longer need them. Your PIDs and line counts will differ.
What this does not prove
We did not reboot, sleep the computer, test a broken network, connect through SSH, upgrade with live handoff, enable pane-history replay, or resume an AI conversation. We did not test Windows or Linux. A program may catch Ctrl+C differently, require its own cleanup, or finish unsuccessfully while you are detached.
The general distinctions match Herdr’s documentation; the exact numbers and drawings come from our own controlled run. Herdr can change these behaviors in later releases. Check your installed version with herdr --version.
Read the counter,
not just the screen.
A single old line on screen proves only that text exists. To check ongoing progress in your disposable heartbeat exercise, preserve two observations of the file with a known gap between them. Keep the session name, command and actual observation times beside the results.
The example file is named heartbeat.jsonl, but the program above writes two whitespace-separated integers per line: process ID and counter. It does not write JSON records. The small reader below accepts that exact format and outputs a JSON summary; it never attaches to Herdr, signals a process or changes the input file.
python3 inspect-heartbeat.py heartbeat.jsonlDownload the read-only counter inspector · Python · Keep a deliberately synthetic three-line input
Three summaries mean different things.
- Same PID, higher counter in the later observation
- The recorded program made progress between observations. That supports this program's continuation during the interval; it does not establish that every pane or application succeeded.
- Same last line in both observations
- No additional line was observed. The program may be stopped, blocked, writing elsewhere or simply not due to write yet. Check the exact file and the job's own state; do not label every unchanged file a dead session.
- Different PID or a counter that restarts
- The evidence no longer describes one uninterrupted counter sequence. A restarted program, a reused file or several writers can produce this pattern. Keep the boundary rather than merging everything into one long run.
Use the summary as a pointer to evidence.
The inspector reports the number of valid records, first and last record, all observed PIDs, counter resets and malformed line numbers. A malformed line is retained as a reported problem; it is not silently counted as a heartbeat. The script does not identify which current operating-system process owns a historical PID.
For a second observation, run the same read-only command again after a meaningful interval for your program. Save both outputs if you need a record. Compare their last PID and counter, then check the actual job's result. Do not repeatedly restart a job merely because you have not yet found its output; a second invocation may create duplicate work.
The official session-state reference describes persistence features. Our original 0.9.5 run above remains the only native Herdr test claimed here. This new inspector was checked with synthetic text; it does not add evidence about sleep, SSH, upgrades or later versions.
Primary references
- Official v0.9.5 release — binary and published checksum, released 14 October 2026.
- Session state and restore — documented persistence paths.
- Configuration — custom keys, shell behavior and optional history.
- CLI reference — named session and pane commands.
- Pinned configuration path source — XDG separation used in our native test.
About & privacy
StillShell publishes an independent visual explanation of Herdr. It is not an official Herdr site and does not represent any former organisation associated with this domain. Original diagrams, prose and heartbeat example are offered under CC0; upstream software retains its own licence.
The story has no uploads, login, payment, analytics script, cookies or browser storage. Choosing an ending changes only this page. Reloading returns to the detach ending. Cloudflare serves the site and processes ordinary request metadata.
StillShell, WebTraceCheck and CleanTempMail share an operator. Optional outgoing product links contain fixed campaign labels for this site and placement; they contain no user input. Destination products have their own policies and limits.
Corrections: support@cleantempmail.com. Include the version and operation, without credentials or private terminal output.