Updating
The public installer keeps a checkout as the setup and repair anchor. The active runtime depends on the install profile:- Supported Linux Local and VPS Hosting installs normally run a verified prebuilt release artifact.
- Their CLI and Gateway service resolve the active version through a stable launcher outside the versioned application directory.
- macOS and explicit
--source-installinstalls run from the source checkout. fased updateis the normal update command for both profiles.- The Control UI currently reports update status; it does not start the update.
- Rerun
./install.shfor repair or reinstall behavior.
fased onboard --install-daemon is setup and service installation. It is not
the primary version-update command.
Recommended path
For a managed Linux Local or WSL install, updates work from any directory:app user through Tailscale:
app should open directly in /home/app/fased.
If it does not, fix the hosted login/shell setup before updating.
For a fresh hosted VPS, use the
exact fresh Hosting command from the VPS
provider root shell.
The verified script installs the exact selected release and verifies the tagged Hosting
artifacts before privileged Fased installation. Users who require verification
before the first script runs can use the expandable advanced procedure in
Advanced installer.
Run the first Hosting install from the VPS provider’s root shell. That path
creates the human app operator, isolated fased-gateway and fased-signer
services, private Tailscale access, and the hosted posture. Use the Tailscale
hostname and app for normal operation and updates. A successful fresh install
does not require --repair-hosting afterward.
A manual global npm install is an advanced local/dev or self-managed-host path;
it is not the normal VPS Hosting path.
CLI update
--no-restart is accepted only when no runtime change is needed. Source and
manual package-manager profiles retain their existing restart option.
By default, fased update uses the stable channel. On a git checkout,
stable means the newest stable v* release tag. It does not mean the moving
head of main. On managed package installs, npm latest resolves the exact
version; the update downloads verified GitHub release layers and does not run a
global npm dependency reconciliation.
Use this for normal end-user updates:
main:
/home/app/fased/install.sh
with sudo or describe that setup as the maintained Hosting boundary.
Native signer artifacts
Fresh dashboard, Gateway, and Fased Network setup do not requirefased-signerd. The native signer is only needed after you choose the local
signer wallet path.
When that path is enabled, Fased downloads the signer asset from the matching
versioned GitHub Release and verifies it against
fased-signerd-checksums.txt and the release’s GitHub/Sigstore attestation.
The release also includes an attested fased-signerd-release.json. Hosting
accepts only a production identity whose exact version, commit, and build-input
digest match both that manifest and the running signer’s health response;
development, missing, or mismatched identities fail closed.
Normal Local, WSL, macOS, and Hosting users do not need Go. WSL uses the Linux
asset; the Unix-socket signer is not supported by a native Windows Node.js
install. Verification failure stops the install instead of falling back to an
implicit source build.
When a Local install already has a native signer, fased update treats the
Gateway and signer as one transaction. It snapshots the current application
and signer state, stages the exact version-matched signer read-only, activates
the application, and requires exact Gateway and signer health before committing
the signer read-write. Before that durable health decision, a failure restores
both sides. After the decision, recovery completes forward so a signer database
that may have recorded a request is never replaced by an older snapshot.
This pairing also applies to tagged macOS and explicit source installs. A
source checkout with a configured signer must be clean, resolve to a production
release tag, allow the required restart, and pass the same exact health checks.
Signer-paired source updates reject an untagged development commit,
--no-restart, or an install-mode switch. Interrupted updates recover from the
owner-only transaction journal before the Gateway starts.
Each tagged release must publish signer assets for Linux and macOS on amd64
and arm64 before wallet setup for that version is considered releasable. A
source checkout can still opt into a local build with
FASED_BUILD_NATIVE_SIGNER_FROM_SOURCE=1 and Go >= 1.25.7. Existing binaries
and alternate trusted release sources remain available through
FASED_WALLET_LOCAL_SIGNER_BIN, FASED_LOCAL_SIGNER_VERSION, and
FASED_LOCAL_SIGNER_BASE_URL.
Existing Local/WSL2 SAT operators that explicitly use large distribution v0
transactions keep FASED_SAT_ENABLE_ALT_V0 and FASED_SAT_PROGRAM_ID from
managed config across restart/update. An update does not silently enable the
feature or widen signer policy; exact satLookup grants still require
owner-policy acknowledgement.
Do not commit generated signer binaries to Git, and do not cut a release just to
test signer setup.
Control UI update status
The browser Control UI shows read-only update state at:Installer rerun
Rerun./install.sh only for a Local/source checkout repair or contributor
workflow. Current installers refresh a clean checkout first. Supported Linux
Local profiles then prefer the verified prebuilt runtime artifact. macOS and
explicit --source-install runs refresh dependencies and build. If the
installer itself changes, it restarts once and continues with the updated
script.
/home/app/fased/install.sh on Hosting, with or without sudo.
Use fased update from the app shell for normal Hosting updates. Use the
exact tagged, attested --repair-hosting procedure from the VPS provider root
console only when the managed updater or root-owned service is broken.
Use ./install.sh --no-git-update only when testing local changes.
What onboard does versus what update does
fased onboard --install-daemon:
- configures the runtime
- installs or refreshes the service
- writes runtime env such as SAT ids into the installed runtime
fased update:
- updates to the configured channel; stable is the default end-user channel and resolves to the newest stable release tag
- uses a verified release artifact for the managed VPS runtime when available
- uses the same verified artifact for supported Linux Local installs
- refreshes dependencies and rebuilds for macOS or explicit source installs
- checks tracked npm plugins after the core update
- detects the local user service or root-managed VPS Hosting service
- restarts the correct service and verifies Gateway health
- restores the previous packaged runtime automatically if post-update health fails
fased update is the complete release update.
You should not need to clear npm caches, reinstall dependencies manually, or
run a separate Gateway repair command.
If the installed packaged version already matches the selected release,
fased update returns Already current: <version> without downloading an
artifact, changing plugins, or restarting the Gateway.
Supported Linux artifacts are layered. A fresh install downloads the
application and dependency layers once. Normal updates reuse the dependency
layer when its build hash is unchanged and replace only the application layer.
When the dependency recipe or lockfile changes, the next update replaces that
layer once and later updates reuse it again.
The managed launcher and updater are deliberately outside each application
version:
fased update resolves the target online without stale npm cache metadata,
verifies checksums and archive paths, stages and smoke-tests the candidate,
switches current atomically, verifies Gateway identity and plugins, and rolls
back automatically on failure. Configuration, credentials, wallets, signer
state, mining data, sessions, and memory remain under the state directory and
are never part of the release swap.
Legacy hosted updater repair
Very old hosted releases may contain an updater that cannot install its own replacement. A typical symptom is an update that reports success whilefased --version remains unchanged. Code added in a newer release cannot run
inside that already-installed old binary.
This is not a normal update and is not a follow-up step after a successful fresh
install. If the install is known to predate the external managed updater, or
fased update already failed or left the version unchanged, do not repeatedly
run the old updater. Go directly to the exact tagged root repair below.
The repair must restore root-owned service helpers and the system service. Open
the VPS provider’s web/recovery console as root (or use root SSH only when the
provider still permits it). Follow the exact
manual pre-execution verification procedure,
but replace the final invocation of the already-verified standalone installer
with:
gh attestation verify step
completed successfully for the same exact release. Remove BOOTSTRAP_DIR only
after the repair succeeds.
Do not run this command from the normal app Tailscale shell, and never run
/home/app/fased/install.sh with sudo. The restricted app account has no
sudo and no root bootstrap socket. The provider-console bootstrap verifies the
exact tagged app bundle attestation before loading any privileged assets.
The repair keeps the existing /home/app/fased checkout and persistent
/home/app/.fased state. It refreshes the managed runtime, replaces a legacy
app-managed user service with the supported root-managed service, restarts the
Gateway, and skips onboarding. Wallets, mining state, credentials, sessions,
plugins, and configuration are not reset.
For Tailscale Serve, repair also keeps the Gateway on loopback, trusts only the
loopback proxy ranges, and removes the obsolete allowInsecureAuth
compatibility flag. Tailscale HTTPS, shared Gateway auth, and device/session
identity remain active.
After this one repair, return to the normal command:
--repair-hosting. If their historical Local/WSL
binary cannot complete fased update, use the Local repair command in the
support contract below.
One-time pre-v2 Local wallet migration
Iffased update reports a pre-v2 Local wallet, it stops before stopping a
process or replacing a file. This is intentional: the updater and Gateway must
not read an old wallet passphrase. First make an offline backup and record the
public address. Run the exact tagged Local repair later on this page if the old
CLI lacks the native signer admin path; it leaves legacy wallet material
untouched. Put the old passphrase in a separate owner-only file, run
fased-signerd admin wallet import-legacy with the wallet’s permanent Agent,
Mining, or Vault role, and compare the returned
public address with the address recorded before migration. Then finalize the
non-secret config/registry conversion:
FASED_WALLET_PASSPHRASE, command arguments,
PowerShell, the dashboard, chat, or a skill. WSL2 users run all three Bash
blocks in the Ubuntu shell, not PowerShell. Existing signer-v2 updates remain
automatic and transactional.
Monitor signer ledger capacity
After install/update and from monitoring, run:state.capacity.* check. Warnings begin at 80% of the hard
fail-closed limits. Terminal operation details are automatically compacted
after 90 days into permanent SHA-256 request-ID replay tombstones; reserved,
broadcast, and unknown records are never pruned. Do not delete signer database
buckets or restore an older snapshot to make room. Follow the complete
snapshot and stale-restore rules in Self-hosted Wallet.
Update support contract
Use this order for every existing installation:- Run
fased update. - Confirm the version changed when an update was available and the Gateway RPC probe is healthy.
- If an old CLI cannot start, fails the update, or reports success without changing the version, bootstrap the runtime once with the matching Local or Hosting installer command below.
- Return to
fased updatefor every later release.
~/.fased or /home/app/.fased, and do not run fresh onboarding merely to fix
an old updater.
For Local, WSL, or macOS exact-version repair, follow the canonical
exact-tag verification
and change only its final invocation to:
fased
launcher, installs or refreshes the user service, and verifies that the running
Gateway reports the same version. It does not overwrite an unrelated
user-managed command or rerun onboarding. On macOS the exact tagged source is
built because no managed Linux runtime artifact is used.
VPS Hosting bootstrap must run from the provider’s root console. Follow the
manual pre-execution verification procedure
for the exact release, then use --repair-hosting instead of --hosting only
in the final invocation of that already-verified standalone installer. Never
recover Hosting by piping a raw repository URL into a shell.
An immutable old binary cannot execute updater logic that was introduced in a
newer release. That one-time bootstrap is therefore unavoidable for a small set
of broken historical builds. It preserves configuration, credentials, wallets,
signer state, mining state, sessions, memory, and installed plugin records.
After the bootstrap installs the stable external updater, later application
versions cannot strand the update command inside an old release directory.
The bootstrap is complete only when fased --version, the Doctor header, and
the Gateway runtime agree, RPC probe: ok is reported, and plugin doctor is
clean. A CLI version alone is not sufficient proof because a legacy service can
still be running from an older source checkout.
./install.sh:
- installs or repairs dependencies
- rebuilds
- refreshes the CLI/runtime
- runs onboarding unless
--no-onboardis set
Update sequence
- check update status
- run update
- run
fased doctor - verify dashboard, wallet, Fased Network, and other critical surfaces
SAT runtime IDs during update
Pre-launch updates keep Satcoin runtime IDs empty unless you explicitly set a test network. After official mainnet launch proof is published, use Mining > Sync to verify the signed manifest and write:Rollback
If a source checkout is bad, roll back to an earlier release tag, then rerun the source installer:Current public boundary
Fresh installs and hosted systems should use the curl bootstrap:- curl bootstrap for fresh local machines, WSL2, and hosted VPS
fased updatefor normal updates- verified GitHub Release artifacts for supported Linux Local and VPS Hosting installs and updates
- source checkout builds for macOS and explicit
--source-installworkflows - manual
npm install -g @fased/fasedis for advanced/local/manual installs, not the recommended hosted VPS setup flow