Skip to main content

max / makenotwork

2.8 KB · 60 lines History Blame Raw
1 # How Bento releases mnw-cli. Lives here rather than in the daemon's config so
2 # it is versioned with the code it describes.
3 #
4 # A service, not an app or a library: mnw-cli is run rather than distributed.
5 # There is no bundle for a user to download and no crate to publish.
6 #
7 # WHY THIS FILE EXISTS AT ALL, which is the whole point of it. Until 2026-08-23
8 # astra's mnw-cli was a binary somebody had placed there by hand in April, with
9 # no release history, no rollback and no way to ask it what it was -- the only
10 # handle was the file's mtime. It was four months old against a source tree that
11 # had moved on, and nothing could have noticed, because a service outside the
12 # pipeline has no release history to be stale against. Infra `e6acf532`.
13 kind = "service"
14
15 # aarch64 only, and the asymmetry is deliberate rather than an omission.
16 #
17 # The Hetzner box already gets this binary, but it gets it INSIDE the MNW server
18 # release: Sando ships it as a companion to `/opt/mnw/current/companions/mnw-cli`,
19 # so prod's copy is pipelined already and building a second x86_64 one here would
20 # be two delivery stories for one binary on one machine. astra's copy is the one
21 # with no pipeline, and astra is aarch64.
22 #
23 # If prod ever stops carrying it as a companion, add `linux/x86_64` here and a
24 # second `[[deploy]]` -- do not hand-place it.
25 targets = ["linux/aarch64"]
26
27 version_path = "Cargo.toml"
28
29 # MNW is one .git over the server, sando, multithreaded, pom, wam, magicmirror
30 # and mnw-cli, each versioned separately, so the default `v{version}` names no
31 # product in particular here.
32 tag_format = "mnw-cli-v{version}"
33
34 # One target, so this is inert either way. Stated rather than omitted so the
35 # answer does not have to be worked out from first principles if a second
36 # target is ever added.
37 require_all_targets = true
38
39 # The service host. A deploy destination is deliberately NOT a `[[host]]` in the
40 # daemon config: a build host is granted build/package, a service host
41 # deploy/restart, and neither is granted the other's.
42 #
43 # install_path is /usr/local/bin/mnw-cli, which is a MOVE: the running binary
44 # was at /opt/mnw-cli/mnw-cli, placed there by hand in April. install-service.sh
45 # refuses any dst outside /usr/local/bin, and that guard is the only thing
46 # bounding a NOPASSWD sudo grant, so the binary moves rather than the guard
47 # widening. That is the same call wam made on 2026-08-15 and for the same
48 # reason. The unit's ExecStart moves with it; WorkingDirectory stays
49 # /opt/mnw-cli, which is its state directory (.env, HOME, ReadWritePaths) and
50 # not where the binary lives.
51 #
52 # No `health_url`: mnw-cli speaks SSH, not HTTP. The recipe asserts the unit is
53 # active and that the port answers with an SSH banner instead, which is the same
54 # question in this service's own vocabulary.
55 [[deploy]]
56 target = "linux/aarch64"
57 host = "astra"
58 install_path = "/usr/local/bin/mnw-cli"
59 service = "mnw-cli.service"
60