Commit Graph
9 Commits
Author SHA1 Message Date
Admin 13f6d14521 [feat](maestro): adopt externally managed services without owning them
The dashboard sees containers Maestro did not create (each repo dev debug compose), and treating them as installs made start/uninstall/config act on a project file that never created them. Mark them external, refuse start/update/uninstall with a message pointing at their own compose project, and let stop work at the container level. Inject runtime env (config-signing public key, plaintext shared-DB DSN) on the managed start path, and keep the external flag a property of the service so a debug sibling cannot flip a managed service.
2026-10-19 02:40:05 +01:00
Admin c014b2abfb fix(auth): hand off privileges before state creation; fail closed on store errors
Fresh boots opened the owner/token/session stores before EnsureDataRoot
dropped to the host user, leaving a root-owned maestro/ state dir whose
EACCES surfaced as a bogus ERR_INVALID_CREDENTIALS on /api/auth/setup.
main() now runs the handoff first; EnsureDataRoot heals pre-existing
root-owned state dirs while still root (healOwnerState).

Storage failures from the owner store now answer 500 ERR_INTERNAL
everywhere (status/setup/login/change-password/RequireSession/
GateWebSocket) instead of blaming credentials or re-advertising setup
mode; SetupRequired returns the store error instead of swallowing it,
and FileOwnerStore.Verify propagates read errors rather than masking
them as unknown-user.
2026-08-23 12:10:15 +01:00
Admin 77bd21aea2 M2 §5: pin auth attestation into InstalledMetadata and inject AUTH_PINNED_FINGERPRINT
Fetch the auth service's key attestation over mTLS at install time and
persist the fingerprint (plus kid/issued-at) in the install record. At
start, inject AUTH_PINNED_FINGERPRINT into every non-oneoff service so
the shared authclient refuses a substituted key instead of silently
trusting it (TOFU/D3). Best-effort: installs that cannot reach the auth
service backfill the pin on the next start. Skip pinning for the auth
service itself (it is the attester).
2026-08-15 23:43:02 +01:00
Admin dc79629c7e feat(security): instance CA + service identity certs (M1)
- lib/pki: root CA provisioning on first run (~/.dcntrlized/pki/), per-service
  leaf identity issuance (90d, refreshed at start), revocation with CRL
- main: EnsureCA on startup
- start: inject CA + identity mounts and AUTH_* mTLS env into compose services
- uninstall: revoke the service's cert (CRL entry published)
2026-08-15 23:10:12 +01:00
Dcntrlized Auto CopyLeft Bot 04935427a1 chore: add AGPL-3.0 license headers 2026-08-04 22:02:50 +00:00
Admin 3f9fe07c7b fix(containers): fall back to image tag when version metadata is empty 2026-08-03 14:22:52 +01:00
Admin 836153ccb5 fix: Resolve repository URL for install/update (registry + install fallbacks) 2026-08-01 23:59:39 +01:00
Admin d24fe0ffbf feat: Implemented (un)install,start/stop flow and fixed actions flow 2026-08-01 20:39:27 +01:00
Admin 0accff3e19 real init 2026-07-29 01:36:09 +01:00