High-Level Summary
Add a headless CLI that creates and manages tunnels to Datum Cloud without requiring a graphical interface. The CLI can run as a foreground process or be daemonized as a background process, and optionally install a tunnel as a system service (systemd on Linux, launchd on macOS, Windows Service on Windows) for persistent, boot-time tunnel management — mirroring the service lifecycle model familiar from Docker and Podman.
Motivation
The Datum desktop app currently requires a display environment, which excludes a large class of legitimate use cases:
- headless servers,
- CI/CD pipelines,
- container workloads,
- SSH-only remote machines, and
- automated infrastructure
where no GUI is available or desirable. Operators who want a persistent tunnel on a server today have no supported path. It's either run the GUI app in a degraded state, cobble together workarounds, or don't use Datum at all. The service installation feature directly addresses the operational gap where tunnels need to survive reboots and run unattended, the same problem Docker and Podman solve for container workloads with systemctl.
Without a CLI and service model, Datum is positioned as a developer convenience tool rather than production infrastructure.
Goals
- Users can invoke datum tunnel (or equivalent subcommand) from any terminal to establish a tunnel without a display environment
- The CLI accepts all tunnel configuration options currently available in the desktop UI (auth, endpoint, credentials, network settings, etc.)
- Users can run the tunnel in the foreground (blocking, logs to stdout/stderr) or detach it as a background daemon
- Users can install a named tunnel as a persistent system service (datum tunnel install --name ) that auto-starts on boot, using systemd on Linux, launchd on macOS, and Windows Service Manager on Windows
- Service lifecycle management commands are supported: install, uninstall, start, stop, status
- The CLI exits with standard POSIX exit codes so it composes cleanly with shell scripts and process supervisors
Non-Goals
- This does not replace or deprecate the existing desktop GUI, the GUI remains the primary UX for interactive desktop users
- No new tunnel types or networking capabilities are introduced; the CLI exposes existing functionality only
- Container-native packaging (e.g., an official Docker image with an entrypoint) is out of scope for this enhancement, though the headless CLI makes it straightforward to build one separately
- Cross-platform service installation is not required to ship simultaneously, Linux/systemd ships first; macOS and Windows follow
- Remote management of tunnels (controlling a daemon over a network socket or API) is out of scope
High-Level Summary
Add a headless CLI that creates and manages tunnels to Datum Cloud without requiring a graphical interface. The CLI can run as a foreground process or be daemonized as a background process, and optionally install a tunnel as a system service (systemd on Linux, launchd on macOS, Windows Service on Windows) for persistent, boot-time tunnel management — mirroring the service lifecycle model familiar from Docker and Podman.
Motivation
The Datum desktop app currently requires a display environment, which excludes a large class of legitimate use cases:
where no GUI is available or desirable. Operators who want a persistent tunnel on a server today have no supported path. It's either run the GUI app in a degraded state, cobble together workarounds, or don't use Datum at all. The service installation feature directly addresses the operational gap where tunnels need to survive reboots and run unattended, the same problem Docker and Podman solve for container workloads with systemctl.
Without a CLI and service model, Datum is positioned as a developer convenience tool rather than production infrastructure.
Goals
Non-Goals