@synapseia-network/node 0.8.10 → 0.8.13

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
@@ -1,5 +1,3 @@
1
- <!-- TODO: Replace https://dashboard.synapseia.network, https://coord.synapseia.network, and Discord/Twitter links before public launch -->
2
-
3
1
  # @synapseia-network/node
4
2
 
5
3
  The Synapseia Network compute node — contribute CPU/GPU cycles to autonomous AI agents and earn SYN tokens on Solana.
@@ -35,10 +33,10 @@ synapseia start # creates a wallet, prints the address, then waits
35
33
  # In another terminal — fund the wallet on devnet:
36
34
  solana airdrop 1 <YOUR_ADDRESS> --url devnet
37
35
  # Re-run:
38
- synapseia start --coordinator https://coord.synapseia.network
36
+ synapseia start
39
37
  ```
40
38
 
41
- For the full walkthrough, keep reading.
39
+ The node talks to the official Synapseia coordinator automatically — no URL flags needed. For the full walkthrough, keep reading.
42
40
 
43
41
  ---
44
42
 
@@ -108,22 +106,14 @@ SYN is the network's reward token. You can run a node without staking, but staki
108
106
 
109
107
  ### Step 5 — Start your node
110
108
 
111
- Point the node at the public coordinator:
112
-
113
- ```bash
114
- synapseia start --coordinator https://coord.synapseia.network
115
- ```
116
-
117
- Or set it once via environment variable:
118
-
119
109
  ```bash
120
- export COORDINATOR_URL=https://coord.synapseia.network
121
110
  synapseia start
122
111
  ```
123
112
 
124
113
  The node will:
125
114
 
126
- - Register with the coordinator on the first heartbeat.
115
+ - Connect to the official Synapseia coordinator.
116
+ - Register on the first heartbeat.
127
117
  - Heartbeat every ~30 seconds.
128
118
  - Wait for incoming work orders (training, inference, research).
129
119
 
@@ -144,7 +134,7 @@ Open `https://dashboard.synapseia.network/nodes` and search for your wallet addr
144
134
 
145
135
  Prefer a desktop app over the CLI? `node-ui` is a cross-platform Tauri app that wraps the same runtime, uses the same wallet (`~/.synapseia/wallet.json`), and points at the same coordinator.
146
136
 
147
- Download from [https://github.com/synapseia-network/node/releases](https://github.com/synapseia-network/node/releases):
137
+ Download from [https://github.com/erscoder/synapseia-node-ui/releases](https://github.com/erscoder/synapseia-node-ui/releases):
148
138
 
149
139
  - **macOS:** `synapseia-node-ui_<version>_aarch64.dmg` (Apple Silicon) or `_x64.dmg` (Intel).
150
140
  - **Windows:** `synapseia-node-ui_<version>_x64.msi`.
@@ -160,7 +150,7 @@ Run the installer, follow the prompts, and on first launch the app will create o
160
150
  |---|---|---|
161
151
  | `[BETA_LIMIT_REACHED] Beta tester limit reached.` | Coordinator beta cap is full. CLI exits with code 0. | Wait for the next slot bump or for mainnet. Re-run `synapseia start` later. |
162
152
  | `Wallet not funded` / `insufficient SOL` | Wallet has 0 SOL on devnet. | Re-do Step 3 (devnet SOL faucet). |
163
- | `Coordinator unreachable` / `ECONNREFUSED` | Wrong coord URL or coordinator is down. | Check the `--coordinator` flag or `COORDINATOR_URL` env var. |
153
+ | `Coordinator unreachable` / `ECONNREFUSED` | Network problem reaching the official coordinator. | Check your internet connection. Status: [status.synapseia.network](https://status.synapseia.network). |
164
154
  | `Cannot find module 'X'` | Global npm install was incomplete. | `npm i -g --force @synapseia-network/node`. |
165
155
  | Modal **"Beta tester limit reached"** in node-ui | Same as the CLI message above. | Same fix — re-try later. |
166
156
  | Wallet password forgotten | The wallet is encrypted; there is no recovery path. | Delete `~/.synapseia/wallet.json` and re-run `synapseia start`. **You'll lose the old address — fund the new one.** |
@@ -175,19 +165,26 @@ Main loop — registers the node, heartbeats, executes work orders.
175
165
 
176
166
  | Flag | Description | Default |
177
167
  |---|---|---|
178
- | `--coordinator <url>` | Coordinator URL | `http://localhost:3701` |
179
- | `--model <name>` | Ollama model for inference workloads | — |
168
+ | `--model <name>` | Ollama model for inference workloads | recommended for hardware |
180
169
  | `--llm-key <key>` | External LLM API key (optional) | — |
181
- | `--inference` | Enable inference workloads | off |
170
+ | `--max-iterations <n>` | Maximum work order iterations | infinite |
171
+ | `--inference` | Enable inference mode (expose GPU as AI inference provider) | off |
172
+ | `--inference-models <models>` | Comma-separated list of models to serve (e.g. `ollama/qwen2.5:7b,ollama/llama3:8b`) | — |
182
173
  | `--lat <n> --lng <n>` | Geolocation override (else IP-based) | — |
183
174
  | `--set-name <name>` | Node display name | — |
184
175
 
185
176
  ### Other commands
186
177
 
187
178
  - `synapseia status` — current runtime status of your node.
188
- - `synapseia wallet` — wallet info, address, balance.
189
- - `synapseia config` — show / edit local config.
190
- - `synapseia staking` — stake / unstake SYN.
179
+ - `synapseia balance` — wallet SOL + SYN balance.
180
+ - `synapseia config --show` — print current config. `--set-name`, `--set-model`, `--set-llm-key` to edit.
181
+ - `synapseia stake` / `unstake` / `stake-info` — stake / unstake SYN, view tier multiplier.
182
+ - `synapseia claim-rewards` / `claim-wo-rewards` — claim accrued rewards.
183
+ - `synapseia deposit-sol` / `deposit-syn` / `withdraw-sol` / `withdraw-syn` — wallet transfers.
184
+ - `synapseia system-info` — hardware detection report.
185
+ - `synapseia export-key` — export the wallet private key (prompts for password).
186
+ - `synapseia wallet-create` / `wallet-verify` — wallet provisioning helpers.
187
+ - `synapseia stop` — stop a running node.
191
188
 
192
189
  Run any command with `--help` for the full option list.
193
190
 
@@ -203,6 +200,18 @@ Run any command with `--help` for the full option list.
203
200
  ```
204
201
  - **Override home dir:** set `SYNAPSEIA_HOME=/path/to/dir`.
205
202
 
203
+ ### Advanced: point at a non-default coordinator
204
+
205
+ The official coordinator is hardcoded and used automatically. Operators running their own coordinator (self-hosted clusters, dev networks) can override via environment variables:
206
+
207
+ ```bash
208
+ export COORDINATOR_URL=https://my-coord.example.com
209
+ export COORDINATOR_WS_URL=https://my-coord.example.com
210
+ synapseia start
211
+ ```
212
+
213
+ The CLI has no `--coordinator` flag any more; env-var override is the only supported mechanism.
214
+
206
215
  ---
207
216
 
208
217
  ## License
@@ -219,14 +228,14 @@ Full text: see the [`LICENSE`](./LICENSE) file in this directory.
219
228
 
220
229
  ## Links
221
230
 
222
- - **Network dashboard:** `https://dashboard.synapseia.network`
231
+ - **Network dashboard:** [https://dashboard.synapseia.network](https://dashboard.synapseia.network)
223
232
  - **Solana devnet faucet:** [https://faucet.solana.com](https://faucet.solana.com)
224
233
  - **Solana CLI install:** [https://docs.solana.com/cli/install](https://docs.solana.com/cli/install)
225
234
  - **Ollama install:** [https://ollama.com](https://ollama.com)
226
- - **Issues:** [https://github.com/synapseia-network/node/issues](https://github.com/synapseia-network/node/issues)
235
+ - **Issues:** [https://github.com/erscoder/synapseia-node/issues](https://github.com/erscoder/synapseia-node/issues)
227
236
 
228
237
  ---
229
238
 
230
239
  ## Contributing & support
231
240
 
232
- Found a bug? Have a feature request? File an issue on GitHub. For real-time support and beta-tester discussion, join us on Discord (`<TBD>`) or follow updates on Twitter (`<TBD>`). PRs welcome — please open an issue first to discuss non-trivial changes.
241
+ Found a bug? Have a feature request? File an issue on GitHub. PRs welcome — please open an issue first to discuss non-trivial changes.
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@synapseia-network/node",
3
- "version": "0.8.10",
3
+ "version": "0.8.13",
4
4
  "description": "Synapseia Network node CLI — P2P compute for autonomous AI agents on Solana.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
- "homepage": "https://github.com/synapseia-network/node#readme",
7
+ "homepage": "https://github.com/erscoder/synapseia-node#readme",
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "git+https://github.com/synapseia-network/node.git"
10
+ "url": "git+https://github.com/erscoder/synapseia-node.git"
11
11
  },
12
12
  "bugs": {
13
- "url": "https://github.com/synapseia-network/node/issues"
13
+ "url": "https://github.com/erscoder/synapseia-node/issues"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "public"
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "files": [
26
26
  "dist",
27
+ "patches",
27
28
  "scripts",
28
29
  "LICENSE",
29
30
  "README.md"
@@ -32,6 +33,7 @@
32
33
  "dev": "tsup index.ts --watch --onSuccess \"node dist/bootstrap.js --help\"",
33
34
  "build": "tsup",
34
35
  "prepare": "npm run build",
36
+ "postinstall": "patch-package",
35
37
  "start": "node dist/bootstrap.js",
36
38
  "test": "jest",
37
39
  "test:mutation": "NODE_OPTIONS=--experimental-vm-modules stryker run",
@@ -70,6 +72,7 @@
70
72
  "dotenv": "^17.3.1",
71
73
  "libp2p": "^3.2.2",
72
74
  "ollama": "^0.5.0",
75
+ "patch-package": "^8.0.0",
73
76
  "reflect-metadata": "^0.2.2",
74
77
  "rxjs": "^7.8.2",
75
78
  "semver": "^7.7.2",
@@ -0,0 +1,48 @@
1
+ diff --git a/node_modules/@libp2p/utils/dist/src/queue/job.js b/node_modules/@libp2p/utils/dist/src/queue/job.js
2
+ index 8aef8c4..13e49d3 100644
3
+ --- a/node_modules/@libp2p/utils/dist/src/queue/job.js
4
+ +++ b/node_modules/@libp2p/utils/dist/src/queue/job.js
5
+ @@ -2,6 +2,11 @@ import { AbortError } from '@libp2p/interface';
6
+ import { setMaxListeners } from 'main-event';
7
+ import { raceSignal } from 'race-signal';
8
+ import { JobRecipient } from "./recipient.js";
9
+ +// synapseia-network patch: WeakMap-backed re-entrance guard for the
10
+ +// per-Job onProgress lambda. See the lambda body for the full
11
+ +// rationale; the map is module-scoped so the flag never appears as
12
+ +// an enumerable property on Job instances and is GC'd with them.
13
+ +const PROPAGATING = new WeakMap();
14
+ /**
15
+ * Returns a random string
16
+ */
17
+ @@ -57,9 +62,28 @@ export class Job {
18
+ ...(this.options ?? {}),
19
+ signal: this.controller.signal,
20
+ onProgress: (evt) => {
21
+ - this.recipients.forEach(recipient => {
22
+ - recipient.onProgress?.(evt);
23
+ - });
24
+ + // synapseia-network patch: any synchronous re-entry
25
+ + // of this lambda on the same Job no-ops. Primary
26
+ + // motivation is the A<->B cross-Job cycle (each
27
+ + // Job's run() lambda registered as the other's
28
+ + // recipient.onProgress -> propagation ping-pongs
29
+ + // until RangeError). Side effect: legitimate
30
+ + // synchronous nested onProgress emissions on the
31
+ + // same Job are also swallowed. libp2p does not
32
+ + // re-enter its own Job synchronously today, so
33
+ + // acceptable. WeakMap keeps the flag off the Job
34
+ + // instance (no Object.keys / JSON noise; auto GC).
35
+ + if (PROPAGATING.get(this) === true) {
36
+ + return;
37
+ + }
38
+ + PROPAGATING.set(this, true);
39
+ + try {
40
+ + this.recipients.forEach(recipient => {
41
+ + recipient.onProgress?.(evt);
42
+ + });
43
+ + } finally {
44
+ + PROPAGATING.set(this, false);
45
+ + }
46
+ }
47
+ }), this.controller.signal);
48
+ this.recipients.forEach(recipient => {