@forgezero/agent 0.1.22 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -135,6 +135,25 @@ platform or tenant release is a durable API row bound to one exact compute:
135
135
  code, and only an awaited successful pipeline writes `deployed`. An expired
136
136
  claim can be recovered; its stale token cannot renew or finish.
137
137
 
138
+ Compute replacement uses the same outbound pattern through
139
+ `@forgezero/agent/migration-pull`: claim one action for this exact compute,
140
+ renew its fencing lease while the awaited function runs, and acknowledge the
141
+ result before accepting more work. The public function accepts the executor as
142
+ an async callback so an embedding Agent can keep privilege and OS policy outside
143
+ the transport. Node evidence is deliberately local-only; it cannot claim
144
+ Agency quorum, replication completion, seed residency, edge exclusion or
145
+ Cloudflare route existence on behalf of the controller.
146
+
147
+ The managed daemon uses `@forgezero/agent/lifecycle-helper` as that executor.
148
+ It is a separate root service behind a group-scoped Unix socket and accepts only
149
+ fixed lifecycle operations. Unit names and loopback health endpoints come from
150
+ a root-owned profile; a signed claim cannot supply a command or path. For a
151
+ cross-network database member, the common installer enrolls the headless WARP
152
+ client from systemd credentials materialized only in `/run`. Readiness requires
153
+ WARP to be connected and the controller-selected private peer IP and database
154
+ port to be reachable. Database traffic is never exposed through a public IP,
155
+ public hostname, or inbound firewall rule.
156
+
138
157
  The same package also runs the identity-only Metal Agent. It initiates outbound
139
158
  hybrid-signed HTTPS and requires request-bound PQ-sealed responses while pulling
140
159
  only claims assigned to its enrolled hostname, then passes
@@ -144,6 +163,11 @@ read Vault data, accept arbitrary commands, or retain tenant credentials. Root
144
163
  SSH is an operator-only platform-genesis/recovery path, not the normal tenant
145
164
  dispatch mechanism.
146
165
 
166
+ New guests also call this same public `fz agent install --apply --enrol` path
167
+ from cloud-init. Metal provisioning does not carry a second handwritten Agent
168
+ unit or deployment runner, so platform and tenant guests cannot drift at that
169
+ foundation boundary.
170
+
147
171
  Shutdown has one process-wide deadline. New deployment claims and background
148
172
  sync stop first, claimed work drains under its lease fence, and only then do the
149
173
  queues and application socket close. Vault/attestation calls or a stale local
@@ -50,6 +50,12 @@ export interface InstallOptions {
50
50
  deploymentEnvironment?: Record<string, string>;
51
51
  deploymentCredentials?: Record<string, string>;
52
52
  pullDeployments?: boolean;
53
+ pullMigrations?: boolean;
54
+ lifecycleProfilePath?: string;
55
+ lifecycleHelperSocketPath?: string;
56
+ warpOrganization?: string;
57
+ warpClientIdCredentialPath?: string;
58
+ warpClientSecretCredentialPath?: string;
53
59
  binPath?: string;
54
60
  sourceBinPath?: string;
55
61
  user?: string;