| 42 |
42 |
|
|
| 43 |
43 |
|
Alloy publishes its source on Make Creative's own platform, for the reason the project holds elsewhere: independence from big-tech-monopoly infrastructure at the layer where users install software, and hosting our own source rather than renting someone's. `astra` is the private mirror and `srht` is a backup remote, not the public face. See `~/Code/CLAUDE.md`, "What each remote is for".
|
| 44 |
44 |
|
|
| 45 |
|
- |
**Current state:** the `mnw` remote is configured but not pushed, so that URL is not live yet. Alloy goes public when there is a manual for a stranger to read.
|
|
45 |
+ |
**Current state:** live since 2026-07-30. The source is the distributed artifact, so this URL is not a courtesy listing, it is where Alloy comes from.
|
| 46 |
46 |
|
|
| 47 |
47 |
|
### CI: none. Builds are local and native.
|
| 48 |
48 |
|
|
| 50 |
50 |
|
|
| 51 |
51 |
|
The image is built by `build/build-image.sh` (disk images, via bootc-image-builder) and `build/build-iso.sh` (the installer ISO) on fw13, against rootful podman. That is the whole build story today, and it is a deliberate consequence of two standing rules rather than an accident: builds are native per architecture and nothing is cross-compiled, and app binaries are never built on the production host.
|
| 52 |
52 |
|
|
| 53 |
|
- |
Which means an always-on x86_64 builder is the actual missing piece, not a CI config. astra is always-on but aarch64, and the image is x86_64. fw13 is x86_64 but sleeps aggressively. Until one machine is both, "CI" would be a scheduler with nothing to schedule onto. The Fedora build host meant to replace Pop!_OS on fw13 is where this resolves.
|
|
53 |
+ |
An always-on x86_64 builder is still wanted for development. It is no longer between Alloy and other people running it: nothing has to be built centrally for a stranger to install Alloy, because the stranger does the building. astra is always-on but aarch64, fw13 is x86_64 and sleeps aggressively, and the Fedora build host meant to replace Pop!_OS on fw13 is where that resolves whenever it does.
|
| 54 |
54 |
|
|
| 55 |
|
- |
### Registry: `quay.io` (deferred until distribution starts)
|
|
55 |
+ |
What deleting the sourcehut job actually cost is worth naming rather than glossing: it ran a build-and-lint smoke test on every push, and now nothing validates the Containerfile except someone remembering to build. That gap is real and is independent of distribution.
|
| 56 |
56 |
|
|
| 57 |
|
- |
Red Hat's container registry is the intended destination once Alloy has an image worth distributing. Free for public images, ecosystem-coherent with the `quay.io/fedora/fedora-bootc:43` base.
|
|
57 |
+ |
### Registry: none, and this is settled rather than deferred
|
| 58 |
58 |
|
|
| 59 |
|
- |
**Current state:** no registry provisioned, and nothing validates the Containerfile except running `build/build-image.sh` by hand. The old sourcehut job did a build-and-lint smoke test on every push; deleting it means that check now happens when someone remembers to build, which is worth naming rather than glossing. When the image is worth distributing, `quay.io/alloy/alloy` gets provisioned with a robot account and whatever builder exists by then grows `sign` and `push` steps.
|
|
59 |
+ |
**Nothing is published, and nothing will be.** Distribution is the builder, not the artifact (decided 2026-07-30). Users take the source, configure it, build the ISO on their own machine, and write it to a medium.
|
| 60 |
60 |
|
|
| 61 |
|
- |
Rejected alternatives (for when distribution starts): ghcr.io (source-registry ecosystem mismatch), Docker Hub (pull rate limits, no advantage), self-hosted (real infra commitment, not worth v0 operational load; revisit v2+).
|
|
61 |
+ |
This section previously read as "quay.io once there is an image worth distributing", which framed publishing as inevitable and merely early. It is not the plan. `quay.io/alloy/alloy` is not a reserved future address, and the alternatives that were weighed against it (ghcr.io, Docker Hub, self-hosted) are moot rather than rejected.
|
| 62 |
62 |
|
|
| 63 |
|
- |
### Signing: cosign (deferred alongside distribution)
|
|
63 |
+ |
Three things follow, and they are the point rather than side effects:
|
| 64 |
64 |
|
|
| 65 |
|
- |
Once a registry is publishing images, cosign signs them as a build step. Public key published in the Alloy repo. Users verify via `bootc switch --signature-source=<url>`. Nothing to set up until distribution starts.
|
|
65 |
+ |
- **No signing story to build.** cosign signs images in a registry; with no registry there is nothing to sign, no public key to publish, and no private key needing a home. What a user verifies instead is the source, which is what git already gives them.
|
|
66 |
+ |
- **No source-availability obligation.** The image carries a large number of GPL and LGPL projects, and redistributing their binaries would put the GPL-2 §3 / GPL-3 §6 offer on Make Creative. Ship no binaries and it never attaches: users pull RPMs from Fedora and Terra, who discharge their own.
|
|
67 |
+ |
- **No hosting, no bandwidth, no publish matrix per architecture.**
|
| 66 |
68 |
|
|
| 67 |
|
- |
The private key needs a home, and "an sr.ht secret" was the old answer, which went out with the sourcehut build. Whatever builds and pushes the image is what needs to hold it; a signing key on a machine that sleeps is a different problem from a signing key in a hosted secret store, and that is another thing the builder decision settles.
|
|
69 |
+ |
The accepted cost is that a build takes real time and disk on the user's own machine, and that there is no path to an Alloy ISO from macOS or Windows at all.
|
|
70 |
+ |
|
|
71 |
+ |
### Updates: only where updates can be fetched
|
|
72 |
+ |
|
|
73 |
+ |
An installed machine does not reach out unless the medium it was installed from named an update target, which only a development build does. The installer enables `bootc-fetch-apply-updates.timer` when `--update-target` was given and leaves it disabled otherwise, so a locally-built install never polls anything.
|
|
74 |
+ |
|
|
75 |
+ |
The eventual home for updates a stranger's machine can reach is a service over synckit/MNW, not a public registry. Until that exists, updating means rebuilding and reinstalling, which is the honest description and should be written that way in the manual.
|
| 68 |
76 |
|
|
| 69 |
77 |
|
## Layer structure
|
| 70 |
78 |
|
|