Skip to content

Commit ac33632

Browse files
docs: close residual Windows-100 gaps in READMEs + manifest
Every Managed-flow connect() example and the /manifest flow now explicitly pass protocol: 'v2ray' so a Windows agent without admin gets the zero-admin auto-installing path instead of silently picking WireGuard and failing. - README.md: hero snippet + "Connect as an agent" Quick Start - server/README.md: /instructions response example - server/src/index.ts: /manifest flow[8] + nativeMacLinux note (setup() clarified as optional; connect() auto-fetches the binary)
1 parent 138ed6f commit ac33632

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ const res = await paidFetch('https://x402.sentinel.co/vpn/connect/30days', {
2424
});
2525

2626
const { subscriptionId, feeGranter, nodeAddress } = await res.json();
27-
const vpn = await connect({ mnemonic: wallet.mnemonic, subscriptionId, feeGranter, nodeAddress });
27+
const vpn = await connect({ mnemonic: wallet.mnemonic, subscriptionId, feeGranter, nodeAddress, protocol: 'v2ray' });
28+
// protocol:'v2ray' = zero admin on Windows, binary auto-installs (~70% of nodes).
2829
// vpn.connected === true — agent's IP is now a Sentinel node, zero gas paid
2930
```
3031

@@ -163,6 +164,7 @@ const vpn = await connect({
163164
nodeAddress: provision.nodeAddress,
164165
subscriptionId: String(provision.subscriptionId),
165166
feeGranter: provision.feeGranter,
167+
protocol: 'v2ray', // zero admin on Windows, binary auto-installs (~70% of nodes)
166168
});
167169

168170
console.log(`VPN up: ${vpn.ip} via ${vpn.protocol}`);

server/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Response (after payment):
105105
"sentinelTxHash": "ABC123...",
106106
"expiresAt": "2026-04-15T18:50:48Z",
107107
"operatorAddress": "0xCC689D...",
108-
"instructions": "import { connect } from 'blue-js-sdk/ai-path'; await connect({ mnemonic, subscriptionId: 1192288, feeGranter: 'sent12e03...' })"
108+
"instructions": "import { connect } from 'blue-js-sdk/ai-path'; await connect({ mnemonic, protocol: 'v2ray', nodeAddress: 'sentnode1...', subscriptionId: '1192288', feeGranter: 'sent12e03...' }); // protocol:'v2ray' = no admin; binary auto-installs. gas paid by feeGranter."
109109
}
110110
```
111111

server/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,14 +447,14 @@ app.get('/manifest', (_req, res) => {
447447
{ step: 5, actor: 'facilitator', action: 'Settle USDC on Base (~2s)' },
448448
{ step: 6, actor: 'server', action: 'Atomic MsgShareSubscription + MsgGrantAllowance on Sentinel' },
449449
{ step: 7, actor: 'server', action: 'Respond 200 with subscriptionId, feeGranter, nodeAddress' },
450-
{ step: 8, actor: 'agent', action: 'Connect (OS-specific, same 200 fields). macOS/Linux: keys add (printf mnemonic+blank-line | keys add agent --keyring.backend test), tx session-start <nodeAddress> --subscription-id <id> --tx.fee-granter-addr <feeGranter> --tx.from-name agent --keyring.backend test, resolve id via query sessions --account-addr <sent1...> --subscription-id <id> --output-format json, then connect <sessionId>. Windows: setup() once, then connect({ mnemonic, subscriptionId, feeGranter, nodeAddress })' },
450+
{ step: 8, actor: 'agent', action: 'Connect (OS-specific, same 200 fields). macOS/Linux: keys add (printf mnemonic+blank-line | keys add agent --keyring.backend test), tx session-start <nodeAddress> --subscription-id <id> --tx.fee-granter-addr <feeGranter> --tx.from-name agent --keyring.backend test, resolve id via query sessions --account-addr <sent1...> --subscription-id <id> --output-format json, then connect <sessionId>. Windows: connect({ mnemonic, subscriptionId, feeGranter, nodeAddress, protocol: "v2ray" }) — zero admin, binary auto-installs; setup() is optional.' },
451451
{ step: 9, actor: 'agent', action: 'MsgStartSession (gas paid by operator via fee grant)' },
452452
{ step: 10, actor: 'agent', action: 'Direct WireGuard/V2Ray handshake with node — tunnel up' },
453453
],
454454
install: {
455455
npm: 'npm install @x402/fetch @x402/evm viem blue-js-sdk',
456456
note: 'Agent side only — you do NOT clone this repo. The four packages above are the complete set for paying + connecting on every OS. express / @x402/express / dotenv are operator-only; do not install them.',
457-
nativeMacLinux: 'The macOS/Linux connect path also needs, OUTSIDE npm: Go 1.24+ (to `go install` sentinel-dvpncli), wireguard-tools (provides `wg-quick`, for WireGuard nodes), and a `v2ray` binary on PATH (for V2Ray nodes). The Windows path needs none of these — setup() fetches them.',
457+
nativeMacLinux: 'The macOS/Linux connect path also needs, OUTSIDE npm: Go 1.24+ (to `go install` sentinel-dvpncli), wireguard-tools (provides `wg-quick`, for WireGuard nodes), and a `v2ray` binary on PATH (for V2Ray nodes). The Windows path needs none of these — connect({ protocol: "v2ray" }) auto-fetches the binary (setup() is optional).',
458458
},
459459
packages: {
460460
payment: '@x402/fetch',

0 commit comments

Comments
 (0)