Skip to content

DeepWork v2026.11.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 06:53
· 144 commits to main since this release

The first release of DeepWork: focus sessions enforced at the network layer, and a 3D city that grows with every session and remembers every early quit.

Install

curl -fsSL https://deepwork.sagyamthapa.com.np/get.sh | sh
deepwork start 50m

The script reads /etc/os-release, picks the right file below, checks it against SHA256SUMS and installs it with your package manager. Or install one by hand:

Distribution File
Debian 12+, Ubuntu 22.04+ deepwork_2026.11.0-1_{amd64,arm64}.deb
Fedora, openSUSE deepwork-2026.11.0-1.{x86_64,aarch64}.rpm
Arch deepwork-git-…-x86_64.pkg.tar.zst (pacman -U)
Other systemd distributions deepwork-2026.11.0-<arch>-linux.tar.gz, then sudo ./install.sh

Then sudo systemctl enable --now deepworkd.service and systemctl --user enable --now deepwork-agent.service (the script does both).

What's in it

  • Throttling, not blocking: a root daemon feeds nftables sets from its own DNS forwarder and slows listed sites with tc/netem, with SNI inspection for connections DNS misses. DNS-over-TLS through systemd-resolved keeps working.
  • Routines that start sessions on their own, with a few skips a week and escalating nudges.
  • Hard to get around: sudo, pkexec and systemctl stop are refused during a session, tampering with the rules is repaired within a second, and loosening the config waits 24 hours.
  • A way out, never a lockout: surrender takes 10 minutes, sessions cap at 6 hours, the PAM hook fails open, and TTY root always works.
  • The city: finished sessions raise buildings; surrendering, tampering or bypassing cracks or levels them.
  • Inverted mode, settings and backups in the app, and a bar module for Waybar and the Omarchy shell.

Known limits

  • Packages are not signed yet (zypper needs --allow-unsigned-rpm).
  • On Fedora the throttle needs kernel-modules-extra (pulled in as a weak dependency).
  • On Ubuntu 22.04, polkit is too old for the JS rule; the PAM hook still guards polkit passwords.

Versions are calendar based: YYYY.M.N.