ttyd serves a single-file xterm.js UI styled with the LotusGuild TDS (web_template base.css). Sessions live in a dedicated tmux server unit (devdesk-tmux.service), so restarting or upgrading the web unit never stops Claude. Each named session maps to a project directory. A Claude SessionStart hook records the conversation ID, so after a reboot the session resumes that exact conversation. - bin/devdesk: attach / new / ls / end / pick, with an fzf picker - ttyd requires a credential that NPM injects; origin check enabled - debian/: dh 13 with --no-stop-on-upgrade for the tmux unit, bundled sha256-verified ttyd 1.7.7, lintian overrides, man page - CI: lint, test, build, smoke-test, artifact; v* tags publish to the Gitea apt registry and create a release Refs: tinker ticket 887531976 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
61 lines
1.7 KiB
Groff
61 lines
1.7 KiB
Groff
.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)
|