.TH DEVDESK 1 "October 2026" "devdesk" "User Commands" .SH NAME devdesk \- persistent Claude Code sessions in tmux, shared by the browser and SSH .SH SYNOPSIS .B devdesk attach .RI [ NAME ] .br .B devdesk new .I NAME .br .B devdesk ls .br .B devdesk pick .br .B devdesk end .I NAME .SH DESCRIPTION .B devdesk manages the named sessions served at https://dev.lotusguild.org. Each session is a tmux session on the DevDesk server (\fI/run/devdesk/tmux.sock\fR, run by \fBdevdesk-tmux.service\fR) with a \fIclaude\fR window and a \fIshell\fR window, rooted in a project directory under \fBDEVDESK_PROJECTS_ROOT\fR. .PP Claude's conversation ID is recorded per session, so after a reboot the session resumes its own conversation. .SH COMMANDS .TP .B attach \fR[\fINAME\fR] Attach to session \fINAME\fR, creating it if needed. The default session (\fBmain\fR) uses the projects root; other names map to the project directory of that name or slug (\(lqtest code\(rq becomes \fBtest-code\fR). Without \fINAME\fR, opens the picker. .TP .B attach --list Print sessions and projects as JSON (used by the web UI). .TP .B new \fINAME\fR Create session \fINAME\fR detached, if it does not exist. .TP .B ls List running (\(bu) and dormant (\(ci) sessions. .TP .B pick Interactive picker (fzf). .TP .B end \fINAME\fR Stop the session and forget its recorded conversation. .SH FILES .TP .I /etc/devdesk/env Port, projects root, Claude binary and arguments, Remote Control switch. .TP .I /etc/devdesk/secret.env ttyd credential; the reverse proxy must send it as HTTP basic auth. .TP .I /var/lib/devdesk/registry.json Session to directory and Claude session ID mapping. .SH SEE ALSO .BR tmux (1), .BR claude (1)