Linux
Short answer: not yet. Alfred-OS’s scheduling layer is launchd, which is macOS-only.
Full doc at docs/LINUX.md. Highlights:
What works on Linux today
Section titled “What works on Linux today”lib/agent_runner.py: every primitive runs unchanged.tests/:pytestruns the full test suite.bin/doctor.sh,bin/hermes-claude: work.examples/bin/label_state.py,examples/git-hooks/pre-push: work.
What doesn’t
Section titled “What doesn’t”launchd/render.sh,deploy.sh: depend onlaunchctl.install.sh: refuses to run unless you setALFRED_FORCE_LINUX=1.
Two interim options
Section titled “Two interim options”Option 1: cron + a wrapper script
Section titled “Option 1: cron + a wrapper script”*/20 * * * * /usr/bin/env HERMES_HOME=$HOME/.hermes WORKSPACE_ROOT=$HOME/code GH_ORG=myorg python3 $HOME/code/myfleet/bin/lucius.py >> /tmp/lucius.log 2>&1You lose per-agent stdout/stderr separation and the _paused/ marker pattern, but the framework primitives all work.
Option 2: hand-rolled systemd user units
Section titled “Option 2: hand-rolled systemd user units”[Unit]Description=alfred-os Lucius
[Service]Type=oneshotEnvironmentFile=%h/.alfredrcExecStart=/usr/bin/env python3 %h/.hermes/bin/lucius.pyStandardOutput=append:%h/.hermes/logs/lucius.stdoutStandardError=append:%h/.hermes/logs/lucius.stderr[Unit]Description=alfred-os Lucius timer
[Timer]OnUnitActiveSec=20minUnit=alfred-os-lucius.service
[Install]WantedBy=timers.targetEnable: systemctl --user enable --now alfred-os-lucius.timer.
This is what a systemd/render.sh would generate. Until that ships, you’re hand-rolling.
Roadmap for first-class Linux support
Section titled “Roadmap for first-class Linux support”See Roadmap. The structure of the work:
systemd/_template.service+systemd/_template.timer.systemd/render.shmirroringlaunchd/render.sh.deploy.shhost detection.install.shLinux branch (apt/dnf/pacman).- Round-trip test on Ubuntu LTS + Fedora.
If you want to do this work, see Contributing. PRs reviewed. If you want to fund it, file an issue with your willingness to sponsor.
WSL2 and Docker
Section titled “WSL2 and Docker”Both work for the framework code; neither is actively tested.
- WSL2: same as Linux. Cron or systemd-user. Watch out for cross-filesystem worktree slowness if you mount Windows drives.
- Docker: alfred-os is not container-friendly. The host-scheduler dependency would need a real port.
If you want to run agents inside containers (a per-firing image with isolated tooling), that’s compatible: write your codename’s bin/<name>.py to docker run --rm ... claude -p .... The framework doesn’t care.