open-agents-ai 0.103.36 → 0.103.37

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
@@ -72,7 +72,8 @@ The agent uses tools autonomously in a loop — reading errors, fixing code, and
72
72
  - **Task templates** — specialized system prompts and tool recommendations for code, document, analysis, plan tasks
73
73
  - **Inference capability scoring** — canirun.ai-style hardware assessment at first launch: memory/compute/speed scores, per-model compatibility matrix, recommended model selection
74
74
  - **Auto-install everything** — first-run wizard auto-installs Ollama, curl, Python3, python3-venv with platform-aware package managers (apt, dnf, yum, pacman, apk, zypper, brew)
75
- - **P2P inference network** — `/p2p` mesh networking with secret-safe variable placeholders (`{{OA_VAR_*}}`), trust tiers (LOCAL/TEE/VERIFIED/PUBLIC), WebSocket peer mesh, and inference routing with automatic secret redaction/injection
75
+ - **P2P inference network** — `/expose` local models or forward any `/endpoint` (Chutes, Groq, OpenRouter, etc.) through the libp2p P2P mesh. Passthrough mode (`/expose passthrough`) relays upstream API requests; `--loadbalance` distributes rate-limited token budgets across peers. `/expose config` provides an arrow-key menu for all settings. Gateway stats show budget remaining from `x-ratelimit-*` headers. Background daemon persists across OA restarts
76
+ - **P2P mesh networking** — `/p2p` with secret-safe variable placeholders (`{{OA_VAR_*}}`), trust tiers (LOCAL/TEE/VERIFIED/PUBLIC), WebSocket peer mesh, and inference routing with automatic secret redaction/injection
76
77
  - **Secret vault** — `/secrets` manages API keys and credentials with AES-256-GCM encrypted persistence; secrets are automatically redacted before sending to untrusted inference peers and re-injected on response
77
78
  - **Auto-expanding context** — detects RAM/VRAM and creates an optimized model variant on first run
78
79
  - **Mid-task steering** — type while the agent works to add context without interrupting
@@ -277,7 +278,7 @@ On startup and `/model` switch, Open Agents detects your RAM/VRAM and creates an
277
278
  | `aiwg_workflow` | Execute AIWG commands and workflows |
278
279
  | **Nexus P2P & x402 Payments** | |
279
280
  | `nexus` | Decentralized agent networking — connect, rooms, DMs, peer discovery, invoke capabilities, metering, trust/blocking, IPFS storage |
280
- | `nexus:expose` | Expose local Ollama models as metered inference capabilities with OpenRouter-based pricing |
281
+ | `nexus:expose` | Expose local models or forward upstream endpoints as metered inference capabilities with pricing, passthrough, and load balancing |
281
282
  | `nexus:wallet_create` | Generate secp256k1/EVM wallet (Base mainnet USDC) with AES-256-GCM encryption + x402-wallet.key |
282
283
  | `nexus:spend` | Sign EIP-3009 USDC TransferWithAuthorization — budget-checked, gasless for payer |
283
284
  | `nexus:remote_infer` | Route inference to a remote peer's model — auto-discovers peers, budget-checks, invokes, returns result |
@@ -956,8 +957,12 @@ The TUI features an animated multilingual phrase carousel, live metrics bar with
956
957
  | `/expose ollama` | Expose local inference via libp2p (default) |
957
958
  | `/expose ollama --tunnel` | Expose via cloudflared tunnel |
958
959
  | `/expose ollama --full` | Allow full Ollama API access (pull/delete) |
959
- | `/expose stop` | Stop the expose gateway |
960
- | `/expose status` | Show expose usage stats |
960
+ | `/expose passthrough` | Forward configured `/endpoint` through libp2p P2P |
961
+ | `/expose forward --loadbalance` | Passthrough with distributed rate-limit budget |
962
+ | `/expose config` | Interactive expose configuration menu (arrow-key nav) |
963
+ | `/expose stop` | Stop all expose gateways |
964
+ | `/expose stop --libp2p` | Stop libp2p gateway only |
965
+ | `/expose status` | Show expose usage stats + budget |
961
966
  | **Metrics & Updates** | |
962
967
  | `/cost` | Show token cost breakdown for the current session |
963
968
  | `/score` | Show inference capability scorecard (memory, compute, speed, model compatibility) |
@@ -1526,6 +1531,86 @@ Expose your local Ollama models to the decentralized nexus network, or consume a
1526
1531
 
1527
1532
  Transport: DHT + mDNS + NATS relay + circuit relay. Auth key is auto-generated and required for all requests. System metrics (CPU/GPU/memory) are available to consumers via the `system_metrics` capability. Without `--full`, destructive Ollama API endpoints (`/api/pull`, `/api/delete`, `/api/create`) are blocked.
1528
1533
 
1534
+ #### Passthrough & Forward Mode
1535
+
1536
+ Forward any configured `/endpoint` (Chutes, Groq, OpenRouter, Together, vLLM, etc.) through the libp2p P2P network. Your node becomes a relay — peers connect to you via libp2p and you forward their requests to your upstream API:
1537
+
1538
+ ```bash
1539
+ # Set your upstream endpoint first
1540
+ /endpoint https://llm.chutes.ai --auth cpk_your_key_here
1541
+
1542
+ # Expose it through P2P — peers discover and invoke via libp2p
1543
+ /expose passthrough
1544
+ # or equivalently:
1545
+ /expose forward
1546
+
1547
+ # With load balancing: distributes daily token budget across peers
1548
+ /expose passthrough --loadbalance
1549
+ ```
1550
+
1551
+ **How it works:**
1552
+ - Your node registers inference capabilities on the P2P mesh using your upstream endpoint's models
1553
+ - Remote peers discover and invoke these capabilities via libp2p streams (DHT/mDNS/NATS)
1554
+ - Requests are forwarded to your upstream API, responses streamed back to the peer
1555
+ - The libp2p daemon persists in the background — it survives OA restarts and remains discoverable even when the TUI is closed
1556
+ - When you reopen OA, it reconnects to the existing daemon and resumes stats tracking
1557
+
1558
+ **Rate limit distribution (`--loadbalance`):**
1559
+ - Captures `x-ratelimit-remaining-tokens` and `x-ratelimit-limit-tokens` headers from upstream API responses
1560
+ - Displays remaining token budget in the gateway stats under "Budget"
1561
+ - Distributes the total daily token budget across connected peers proportionally
1562
+ - Prevents any single peer from exhausting the shared budget
1563
+
1564
+ #### Budget & Rate Limit Monitoring
1565
+
1566
+ When exposing an upstream endpoint that returns rate-limit headers (most cloud providers do), the gateway stats automatically track your remaining budget:
1567
+
1568
+ ```
1569
+ Expose Gateway Stats (libp2p passthrough)
1570
+ Status active
1571
+ Transport libp2p (passthrough)
1572
+ Peer ID 12D3KooWSzC75QX...
1573
+ Uptime 2h 15m
1574
+ Total requests 847
1575
+ Tokens in 125.4K
1576
+ Tokens out 892.1K
1577
+ Budget 1.2M/10M (12% left)
1578
+
1579
+ Models
1580
+ qwen3.5-4b 412 reqs in:52.3K out:401.2K
1581
+ qwen3.5-9b 435 reqs in:73.1K out:490.9K
1582
+
1583
+ Active Peers (3)
1584
+ 12D3KooWSwaCi1Jg...
1585
+ Session: 1h 45m Last seen: now Requests: 523
1586
+ Tokens: in:82.1K out:612.4K
1587
+ · qwen3.5-4b 312req 401.2Ktok
1588
+ · qwen3.5-9b 211req 293.3Ktok
1589
+ 12D3KooWKnCgxx7D...
1590
+ Session: 45m Last seen: 2m ago Requests: 324
1591
+ Tokens: in:43.3K out:279.7K
1592
+ · qwen3.5-9b 224req 197.6Ktok
1593
+ ```
1594
+
1595
+ Internal capabilities (`system_metrics`, `__list_capabilities`) are hidden from all displays — both the full stats view and the compact status bar one-liner.
1596
+
1597
+ #### `/expose config` — Interactive Configuration
1598
+
1599
+ Arrow-key navigable menu for all expose settings:
1600
+
1601
+ ```bash
1602
+ /expose config
1603
+ ```
1604
+
1605
+ Shows options to:
1606
+ - View current stats
1607
+ - Stop all gateways
1608
+ - Start Ollama (libp2p or tunnel)
1609
+ - Start passthrough (with or without load balancing)
1610
+ - Start vLLM
1611
+
1612
+ Uses the same arrow-key navigation pattern as `/model` and `/endpoint` selection.
1613
+
1529
1614
  ### Endpoint Cascade Failover
1530
1615
 
1531
1616
  When you've used multiple endpoints, the agent automatically builds a failover cascade. If the primary endpoint fails with transient errors (502, connection refused, timeout), it transparently switches to the next endpoint that has the same model — then periodically probes the primary to return when it recovers:
package/dist/index.js CHANGED
@@ -26371,10 +26371,15 @@ function renderSlashHelp() {
26371
26371
  ["/nexus", "Show nexus P2P network status (or connect/disconnect/rooms)"],
26372
26372
  ["/nexus connect", "Connect to the agent mesh network"],
26373
26373
  ["/nexus wallet", "Show wallet address and x402 payment status"],
26374
- ["/expose <backend>", "Share local inference via cloudflared tunnel"],
26375
- ["/expose <backend> --key", "Share with auto-generated auth key"],
26376
- ["/expose status", "Show gateway stats (requests, models, errors)"],
26377
- ["/expose stop", "Stop the expose gateway"],
26374
+ ["/expose <backend>", "Expose local inference via libp2p (default)"],
26375
+ ["/expose <backend> --tunnel", "Expose via cloudflared tunnel"],
26376
+ ["/expose passthrough", "Forward configured /endpoint through libp2p P2P"],
26377
+ ["/expose forward --loadbalance", "Passthrough with distributed rate-limit budget"],
26378
+ ["/expose config", "Interactive expose configuration menu"],
26379
+ ["/expose status", "Show gateway stats (requests, models, budget)"],
26380
+ ["/expose stop", "Stop all expose gateways"],
26381
+ ["/expose stop --tunnel", "Stop tunnel gateway only"],
26382
+ ["/expose stop --libp2p", "Stop libp2p gateway only"],
26378
26383
  ["/p2p start", "Join the P2P agent mesh network"],
26379
26384
  ["/p2p status", "Show mesh peers and rooms"],
26380
26385
  ["/p2p stop", "Leave the mesh network"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.103.36",
3
+ "version": "0.103.37",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",