Release v0.1.1:3 with Configure Subspaces, monitor CLI, and spaces v0.0.9x.
Build Service / BuildPackage (push) Has been cancelled

Adds a user toggle for SUBS_PUBLISH_REQUIRE_FINALIZED, copies the certrelay monitor binary to /data/bin for terminal use, and bumps the spaced image to horologger/spaces:v0.0.9x.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-16 18:53:22 -04:00
co-authored by Cursor
parent ad64a47d42
commit 1fa9674d49
11 changed files with 127 additions and 51 deletions
+17 -5
View File
@@ -60,6 +60,7 @@ image's `docker_entrypoint.sh`; daemons are defined in `startos/main.ts`.
| `/data/subspaces/registry` | `main` | Working directory for the `registry-server` daemon. |
| `/data/certrelay/data` | `main` | Certrelay data directory (`CERTRELAY_DATA_DIR`) — anchors, peer state, sqlite. |
| `/data/bin/fabric` | `main` | The `fabric` CLI, copied from the certrelay image on each start so the gotty terminal (which has `/data/bin` on PATH) can resolve handles. |
| `/data/bin/monitor` | `main` | The `monitor` CLI, copied from the certrelay image on each start (file only — not run as a daemon). |
| `/data/support.pdf` | `main` | Workshop PDF served by nacho. Uploaded/replaced via the **Upload Support PDF** action. Missing until an upload has been performed. |
| `/data/nacho/ignore_names.txt` | `main` | Comma-separated names hidden from the nacho UI (read at runtime). Created by the `nacho-setup` oneshot with the default (`fold,swifty`) on first start; managed by the **Configure Nacho** action. |
@@ -88,8 +89,9 @@ On the first install, StartOS:
default (`fold,swifty`) on first daemon start if it doesn't exist.
6. Launches `spaced` as a managed daemon (no `screen`, no shell auto-start)
and the `gotty` web terminal once the bashrc oneshot completes.
7. Runs `certrelay-setup` (creates `/data/certrelay/data`, copies the `fabric`
CLI to `/data/bin/fabric`) and launches the **certrelay** daemon on 7778.
7. Runs `certrelay-setup` (creates `/data/certrelay/data`, copies `fabric` and
`monitor` into `/data/bin/` as CLI files only) and launches the **certrelay**
daemon on 7778.
Certrelay is **always on**; its `CERTRELAY_SPACED_RPC_URL` uses the local
spaced credentials from `store.spacedAuth`. Configure its self URL etc. via
the **Configure Certrelay** action.
@@ -108,6 +110,7 @@ mainnet-only.
| Bitcoin RPC username / password (registered on bitcoind) | Wallet creation, bidding, and registration -- all driven via `space-cli` inside the terminal |
| Spaced RPC username / password (`SPACED_RPC_USER`/`SPACED_RPC_PASSWORD`) | `space-cli` flags and subcommands |
| Subspaces auth toggle + credentials (`SUBS_BASIC_AUTH_USER`/`SUBS_BASIC_AUTH_PASSWORD`, off by default) | |
| `SUBS_PUBLISH_REQUIRE_FINALIZED` (off by default; via **Configure Subspaces**) | |
| Subspaces Prover auth toggle + credentials (`SUBS_PROVER_BASIC_AUTH_USER`/`SUBS_PROVER_BASIC_AUTH_PASSWORD`, off by default) | |
| Chain selection (locked to `mainnet`) | |
| Spaced data directory and RPC bind | |
@@ -142,6 +145,7 @@ mainnet-only.
| `disable-subspaces` | Disable Subspaces | Enabled (hidden when already off) | Any | Sets `store.enableSubspaces = false` and triggers a service restart so the subs and subs-prover daemons stop. On-disk data at `/data/subspaces` is preserved. |
| `reset-subspaces-state` | Reset Subspaces State | Enabled | Any | Deletes `/data/subspaces` (runtime data only — binaries ship in the image). Use to wipe local handles/proofs. The spaces wallet on spaced is preserved. Warning-gated. |
| `set-subs-prover` | Enable / Disable Subspaces Prover | Enabled | Any | Toggle (`store.enableSubsProver`, default **off**) that starts/stops only the `subs-prover` daemon, independent of the overall Subspaces toggle. When off, the daemon doesn't start but its interface (8888) stays registered. Saving restarts the service. |
| `configure-subspaces` | Configure Subspaces | Enabled | Any | Toggle `SUBS_PUBLISH_REQUIRE_FINALIZED` (default **off**). When on, subs requires finalized commitments before certificate publish. Stored in `store.subsPublishRequireFinalized`; injected into the `subs` daemon env. Saving restarts the service. |
| `enable-subs-auth` | Enable Subspaces Auth | Enabled (hidden when already on) | Any | Sets `store.subsAuthEnabled = true`. If no credentials exist yet, generates `{ username: 'spaces', password: random32 }` and stores them in `store.subsAuth`. Restart re-launches `subs` with `SUBS_BASIC_AUTH_USER`/`SUBS_BASIC_AUTH_PASSWORD` env vars set. |
| `disable-subs-auth` | Disable Subspaces Auth | Enabled (hidden when already off) | Any | Sets `store.subsAuthEnabled = false`. Stored credentials are preserved so a later re-enable does not regenerate them. Restart re-launches `subs` without the auth env vars. |
| `show-subs-credentials` | Show Subspaces Auth Credentials | Enabled | Any | Surfaces the current `SUBS_BASIC_AUTH_USER`/`SUBS_BASIC_AUTH_PASSWORD` (from `store.subsAuth`) plus a loopback connection URL. Reports whether auth is currently enforced. |
@@ -207,8 +211,9 @@ the same idempotent init logic runs and reuses the existing credentials in
8. **Certrelay is always on.** It ships as the prebuilt
`horologger/certrelay:v0.2.3` image (static musl binaries) and runs on
7778 from service start. It talks to the local spaced over loopback using
the `store.spacedAuth` credentials. The bundled `fabric` CLI is copied to
`/data/bin/fabric` so it's runnable from the Space-CLI Web UI. **You must
the `store.spacedAuth` credentials. The `fabric` and `monitor` binaries are copied to
`/data/bin/` for manual use from the Space-CLI Web UI; neither is auto-started
(only the certrelay server runs as a managed daemon). **You must
set `CERTRELAY_SELF_URL`** (via **Configure Certrelay**) to the publicly
visible URL StartOS exposes for the Certrelay interface, or peers/clients
won't be able to reach this relay at the advertised address.
@@ -245,7 +250,7 @@ spaces balance
package_id: spaces
upstream_version: subspacesplus
images:
spaces: docker.io/horologger/spaces:v0.0.9s
spaces: docker.io/horologger/spaces:v0.0.9s(x)
subspaces: docker.io/horologger/subs:v0.1.2
certrelay: docker.io/horologger/certrelay:v0.2.3
nacho: docker.io/horologger/nacho:v1.0.0
@@ -299,6 +304,11 @@ subspaces:
env_vars: # injected only when subsAuthEnabled=true AND subsAuth!=null
- SUBS_BASIC_AUTH_USER
- SUBS_BASIC_AUTH_PASSWORD
publish_require_finalized:
default: false
store_field: subsPublishRequireFinalized
env_var: SUBS_PUBLISH_REQUIRE_FINALIZED # always 'true' or 'false' on subs daemon
action: configure-subspaces
actions:
- enable-subs-auth
- disable-subs-auth
@@ -322,6 +332,7 @@ certrelay:
image: horologger/certrelay:v0.2.3 # prebuilt; static musl binaries
server_bin: /usr/local/bin/certrelay
fabric_bin: /usr/local/bin/fabric # copied to /data/bin/fabric for the CLI
monitor_bin: /usr/local/bin/monitor # copied to /data/bin/monitor (CLI only; not started)
data_dir: /data/certrelay/data
port: 7778
spaced_rpc_creds: from store.spacedAuth (local spaced)
@@ -361,6 +372,7 @@ actions:
- enable-subspaces
- disable-subspaces
- set-subs-prover
- configure-subspaces
- enable-subs-auth
- disable-subs-auth
- show-subs-credentials