Skip to content

Commit d113d2d

Browse files
committed
feat: add live progress reporting for bootstrap installer and document progress stages in README
1 parent 03aab2d commit d113d2d

1 file changed

Lines changed: 28 additions & 8 deletions

File tree

README.md

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Noderax Agent is the Go-based node runtime for the platform. It enrolls a machin
1010
- Enrollment-based node onboarding with approval tokens
1111
- One-click bootstrap installer for Ubuntu and Debian
1212
- Workspace-generated bootstrap tokens for the `Add node` flow
13+
- Installer-side live progress reporting back to the control plane during bootstrap
1314
- Background service support for Linux-based systems
1415
- Dedicated `noderax` runtime user for the service and remote operations
1516
- Built-in CLI for install, start, stop, restart, status, and config updates
@@ -48,8 +49,26 @@ The installer:
4849
- grants passwordless `sudo` to `noderax`
4950
- downloads the correct prebuilt agent binary
5051
- bootstraps the node with the provided token
52+
- reports bootstrap progress back to the API so the web `Add node` modal can update live
5153
- installs and starts the background service automatically
5254

55+
## One-Click Install Progress Stages
56+
57+
The bootstrap installer reports stage changes back to `POST /api/v1/node-installs/progress` while it runs.
58+
59+
Common stages:
60+
61+
- `installer_started`
62+
- `dependencies_installing`
63+
- `dependencies_ready`
64+
- `service_user_ready`
65+
- `binary_download_started`
66+
- `binary_downloaded`
67+
- `agent_bootstrapping`
68+
- `service_started`
69+
70+
If any step fails, the installer reports `failed` so the web UI can stop waiting and show the error state.
71+
5372
## R2 Release Automation
5473

5574
Agent release assets can be published to Cloudflare R2 automatically by the GitHub Actions workflow at [`.github/workflows/agent-release.yml`](./.github/workflows/agent-release.yml).
@@ -71,22 +90,22 @@ Required GitHub secrets:
7190
- `R2_SECRET_ACCESS_KEY`
7291
- `R2_BUCKET`
7392

74-
`R2_BUCKET` plain bucket name olmalı. URL veya custom domain verme.
93+
`R2_BUCKET` must be the plain bucket name only. Do not use a URL or custom domain.
7594

76-
Doğru örnek:
95+
Correct example:
7796

7897
- `R2_BUCKET=noderax-assets`
7998

80-
Yanlış örnekler:
99+
Incorrect examples:
81100

82101
- `R2_BUCKET=https://cdn.noderax.net`
83102
- `R2_BUCKET=https://<accountid>.r2.cloudflarestorage.com/noderax-assets`
84103

85-
Workflow publish öncesi bucket varlığını da kontrol eder. `NoSuchBucket` alırsan genelde şu üç sebepten biridir:
104+
The workflow checks bucket existence before publishing. If you get `NoSuchBucket`, the most common reasons are:
86105

87-
- `R2_BUCKET` değeri gerçek bucket adı değildir
88-
- `R2_ACCOUNT_ID` farklı bir Cloudflare hesabına aittir
89-
- access key çifti bucket’ın bulunduğu hesaba ait değildir
106+
- `R2_BUCKET` is not the real bucket name
107+
- `R2_ACCOUNT_ID` belongs to a different Cloudflare account
108+
- the access key pair belongs to a different account than the bucket
90109

91110
Trigger behavior:
92111

@@ -283,6 +302,7 @@ Implementation notes:
283302
- The terminal session environment sets `TERM=xterm-256color` and `PAGER=cat`
284303
- Output is chunked and flushed on a timer so the web console receives live updates without waiting for more keystrokes
285304
- On constrained hosts, fallback PTY modes may log reduced job-control capability while remaining usable
305+
- `terminal.stop` requests a remote shell shutdown, and the API applies a timeout fallback if the shell disappears without a final clean exit event
286306

287307
## Task Execution Environment
288308

@@ -292,7 +312,7 @@ The agent executes `shell.exec` tasks in a controlled non-interactive environmen
292312
- `COLUMNS=100000`
293313
- graceful cancellation with log drain timeout
294314
- scheduled tasks use the same execution path as manually queued tasks
295-
- when installed through the bootstrap installer, tasks run under the `noderax` user
315+
- when installed through the bootstrap installer, shell and package tasks run under the `noderax` user
296316
- package operations can elevate through passwordless `sudo -n` provided to `noderax`
297317

298318
For package listing on Debian/Ubuntu, the agent uses optimized `dpkg -l` parsing to return structured package metadata.

0 commit comments

Comments
 (0)