Launch: install script, Homebrew tap, build from source #22

Closed
opened 2026-10-02 01:38:36 +00:00 by jhgaylor · 1 comment
Owner

Blocks: #28 (and through it the control track)

Ways to install, all from the release binaries (#21).

Decided 2026-10-01: a curl | sh script, a Homebrew tap, and a documented build from source. Linux arm64 is included.

install.sh

  • Detects OS and arch (linux x86_64/aarch64, darwin arm64; anything else gets a clear "build from source" message).
  • Downloads the latest (or ILLOGICAL_VERSION) tarball from the Forgejo release, checks it against SHA256SUMS, and installs illogicald and illogical to ~/.local/bin.
  • Runs illogicald install (systemd user service on Linux, launchd agent on macOS), and on Linux suggests loginctl enable-linger.
  • Prints the next steps: open http://127.0.0.1:7681, and tailscale serve --bg --https=443 http://127.0.0.1:7681 for the phone and other machines.
  • Served from the page's domain (https://illogical.widgets.wtf/install.sh) and from the repo.
  • Re-running it upgrades in place (it's illogicald install again, which M2b already makes safe on Linux).
  • Shellcheck in CI.

Homebrew tap

  • A jhgaylor/homebrew-tap repo on Forgejo with an illogical formula that installs the release binary (macOS arm64, Linux x86_64/arm64): brew tap jhgaylor/tap https://git.inevitable.fyi/jhgaylor/homebrew-tap && brew install illogical.
  • A caveats (or service do block) that says to run illogicald install, or uses brew services. Pick one; two service managers fighting over the daemon is the thing to avoid.
  • The release workflow bumps the formula's version and sha256s.

From source

  • README section: rustup, mise (Zig 0.16 via .mise.toml), pnpm, just bootstrap && just install. The Zig 0.15.2 note from PLAN's one-time setup, if libghostty-vt still needs it.
  • cargo install --git doesn't work as-is: web/dist isn't committed and the daemon embeds it at build time. Either document "use just", or have build.rs fail with a clear message when web/dist is missing.

Done when

  • On a fresh Ubuntu VM and on a Mac, the one-liner from the page installs it and the page at :7681 loads.
  • brew install works on the Mac.
**Blocks:** #28 (and through it the control track) Ways to install, all from the release binaries (#21). Decided 2026-10-01: a `curl | sh` script, a Homebrew tap, and a documented build from source. Linux arm64 is included. ### `install.sh` - [ ] Detects OS and arch (linux x86_64/aarch64, darwin arm64; anything else gets a clear "build from source" message). - [ ] Downloads the latest (or `ILLOGICAL_VERSION`) tarball from the Forgejo release, checks it against `SHA256SUMS`, and installs `illogicald` and `illogical` to `~/.local/bin`. - [ ] Runs `illogicald install` (systemd user service on Linux, launchd agent on macOS), and on Linux suggests `loginctl enable-linger`. - [ ] Prints the next steps: open http://127.0.0.1:7681, and `tailscale serve --bg --https=443 http://127.0.0.1:7681` for the phone and other machines. - [ ] Served from the page's domain (`https://illogical.widgets.wtf/install.sh`) and from the repo. - [ ] Re-running it upgrades in place (it's `illogicald install` again, which M2b already makes safe on Linux). - [ ] Shellcheck in CI. ### Homebrew tap - [ ] A `jhgaylor/homebrew-tap` repo on Forgejo with an `illogical` formula that installs the release binary (macOS arm64, Linux x86_64/arm64): `brew tap jhgaylor/tap https://git.inevitable.fyi/jhgaylor/homebrew-tap && brew install illogical`. - [ ] A `caveats` (or `service do` block) that says to run `illogicald install`, or uses `brew services`. Pick one; two service managers fighting over the daemon is the thing to avoid. - [ ] The release workflow bumps the formula's version and sha256s. ### From source - [ ] README section: rustup, mise (Zig 0.16 via `.mise.toml`), pnpm, `just bootstrap && just install`. The Zig 0.15.2 note from PLAN's one-time setup, if libghostty-vt still needs it. - [ ] `cargo install --git` doesn't work as-is: `web/dist` isn't committed and the daemon embeds it at build time. Either document "use just", or have `build.rs` fail with a clear message when `web/dist` is missing. ### Done when - On a fresh Ubuntu VM and on a Mac, the one-liner from the page installs it and the page at :7681 loads. - `brew install` works on the Mac.
Author
Owner

Done.

  • scripts/install.sh, served at https://illogical.widgets.wtf/install.sh: detects linux x86_64/arm64 and darwin arm64, verifies SHA256SUMS, runs illogicald install. Re-running upgrades, and illogicald install now keeps the daemon's earlier flags when given none (--reset-args drops them), so upgrades don't lose --block-listen and friends (this also affected just install on geek). On Linux without systemd it installs the binaries and says how to start the daemon. Shellchecked in CI.
  • Tested: fresh Ubuntu VM (no systemd) with the page's one-liner; Ubuntu + systemd user manager (service active, CLI works, upgrade kept --owner); macOS with a temp HOME.
  • Homebrew: jhgaylor/homebrew-tap (public), formula from packaging/homebrew/illogical.rb.in, bumped by the release. brew tap jhgaylor/tap https://git.inevitable.fyi/jhgaylor/homebrew-tap && brew install illogical tested on jake-mini (then removed). The caveat says to run illogicald install (no brew services, so two service managers don't fight).
  • From source: docs/development.md. A release build without web/dist now stops with a message.
Done. - `scripts/install.sh`, served at https://illogical.widgets.wtf/install.sh: detects linux x86_64/arm64 and darwin arm64, verifies SHA256SUMS, runs `illogicald install`. Re-running upgrades, and **`illogicald install` now keeps the daemon's earlier flags** when given none (`--reset-args` drops them), so upgrades don't lose `--block-listen` and friends (this also affected `just install` on geek). On Linux without systemd it installs the binaries and says how to start the daemon. Shellchecked in CI. - Tested: fresh Ubuntu VM (no systemd) with the page's one-liner; Ubuntu + systemd user manager (service active, CLI works, upgrade kept `--owner`); macOS with a temp HOME. - Homebrew: `jhgaylor/homebrew-tap` (public), formula from `packaging/homebrew/illogical.rb.in`, bumped by the release. `brew tap jhgaylor/tap https://git.inevitable.fyi/jhgaylor/homebrew-tap && brew install illogical` tested on jake-mini (then removed). The caveat says to run `illogicald install` (no `brew services`, so two service managers don't fight). - From source: docs/development.md. A release build without `web/dist` now stops with a message.
Sign in to join this conversation.
No description provided.