Run a long agent like codex --yolo in a detachable terminal session
Resume a session from another terminal using the fzf picker
Detach a client remotely with d --detach and a session name
Keep separate sessions in the same directory by running the command twice
Needs fzf on PATH for the session picker, and ~/.local/bin on PATH after running ./di install.
di is a small command-line tool, written in Go, for running terminal sessions that you can disconnect from and rejoin later. The repository description calls it a tiny wrapper around dtach, but the README clarifies that it does not actually depend on dtach. Instead, di manages the pseudo-terminal and a Unix socket on its own using only Go code. The tool ships as two command names that point to the same binary. The d command starts and controls sessions, while the di name opens a picker for existing sessions. The picker uses fzf, so the README asks you to install fzf and make sure it is on your PATH. Starting a new session or listing sessions does not need fzf. Installation is direct. You clone the repository, run go build to produce the di binary, and then run ./di install. That step places d under ~/.local/bin and creates a di symlink next to it, so you need to have ~/.local/bin on your PATH. Daily use is a short set of commands. You start a session by running d followed by the command you want to run inside it, for example d codex --yolo. Pressing Ctrl-] detaches the front-end while the back-end command keeps running. The mouse wheel is not forwarded to the back-end program so that you can scroll the terminal's own history buffer. Running di on its own shows a list of running sessions, including the directory and command each was started from, and lets you pick one to rejoin. Running the same command twice in the same directory creates a fresh session each time rather than sharing one. You can also detach a client from another terminal with d --detach and a session name, or change the detach key for one run by setting the D_DETACH environment variable. The README is honest about what di does not do. It builds on Linux and macOS, including Apple Silicon and Intel builds. It only solves the problem of leaving and rejoining a terminal session. It is not a checkpoint tool, and it does not save process memory, file system snapshots, or network connection state.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.