@burdenoff/vibe-agent 1.0.3 → 1.1.0

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/.env.example CHANGED
@@ -1,8 +1,15 @@
1
1
  PORT=3005
2
2
  NODE_ENV=development
3
3
  CORS_ORIGIN="http://localhost:3000"
4
- AGENT_API_KEY="vibecontrols-agent-secret-key"
5
4
  DB_PATH="./vibecontrols-agent.db"
6
5
 
6
+ # API Key: By default, a random key is generated on each restart.
7
+ # Set a static key here to persist it across restarts.
8
+ # Or use: vibe config --set static-api-key=true (auto-generate persistent key)
9
+ # AGENT_API_KEY="your-static-api-key-here"
10
+
7
11
  # Set to 'false' to disable auto-starting the cloudflared tunnel on boot
8
12
  # AGENT_TUNNEL=false
13
+
14
+ # Skip auto-bootstrapping system dependencies on startup
15
+ # SKIP_BOOTSTRAP=true
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @burdenoff/vibe-agent
2
2
 
3
- Remote development environment management CLI with terminal multiplexing, SSH tunneling, port forwarding, and cloudflared integration.
3
+ Remote development environment management CLI with terminal multiplexing, SSH tunneling, port forwarding, cloudflared integration, and a plugin system.
4
4
 
5
5
  **VibeControls Agent** runs as a lightweight local service on your development machine, providing a unified REST API and CLI for managing tmux sessions, SSH connections, cloudflared tunnels, port forwards, background tasks, and more.
6
6
 
@@ -15,23 +15,23 @@ Requires **Node.js >= 18**.
15
15
  ## Quick Start
16
16
 
17
17
  ```bash
18
- # 1. Check system dependencies
19
- vibe setup --check
20
-
21
- # 2. Install missing dependencies (tmux, ttyd, cloudflared)
22
- vibe setup
23
-
24
- # 3. Start the agent (foreground)
18
+ # Start the agent (auto-detects first run and installs dependencies)
25
19
  vibe start
26
20
 
27
- # 4. Or start as a background daemon
21
+ # Or start as a background daemon
28
22
  vibe start -d
29
23
 
30
- # 5. Verify it's running
24
+ # Verify it's running
31
25
  vibe health
32
26
  vibe status
33
27
  ```
34
28
 
29
+ On **first run**, the agent automatically:
30
+
31
+ 1. Detects missing system dependencies (tmux, ttyd, cloudflared)
32
+ 2. Installs them via `vibe setup`
33
+ 3. Detects port conflicts and auto-selects the next available port
34
+
35
35
  ## Configuration
36
36
 
37
37
  Create a `.env` file in your working directory or set environment variables:
@@ -41,10 +41,24 @@ Create a `.env` file in your working directory or set environment variables:
41
41
  | `PORT` | Agent server port | `3005` |
42
42
  | `NODE_ENV` | Environment | `development` |
43
43
  | `CORS_ORIGIN` | Allowed CORS origin | `http://localhost:3000` |
44
- | `AGENT_API_KEY` | API key for authentication | (auto-generated) |
44
+ | `AGENT_API_KEY` | Static API key (optional) | (auto-generated) |
45
45
  | `DB_PATH` | SQLite database path | `./vibecontrols-agent.db` |
46
46
  | `AGENT_TUNNEL` | Auto-start cloudflared tunnel | `true` |
47
47
 
48
+ ### Static API Key
49
+
50
+ By default, the agent generates a new API key on each restart. To persist one:
51
+
52
+ ```bash
53
+ # Auto-generate and save a persistent key
54
+ vibe config --set static-api-key=true
55
+
56
+ # Or set an explicit key
57
+ vibe config --set static-api-key=my-secret-key-here
58
+ ```
59
+
60
+ The key is stored in `~/.vibecontrols/config.json`.
61
+
48
62
  An `.env.example` file is included in the package for reference.
49
63
 
50
64
  ## Command Reference
@@ -80,6 +94,9 @@ vibe health # Health check via HTTP
80
94
  vibe info # Detailed version/system info
81
95
  vibe key # Display the agent API key
82
96
  vibe system # System info from running agent
97
+
98
+ vibe update # Update to latest version
99
+ vibe update --check # Check for updates without installing
83
100
  ```
84
101
 
85
102
  ### Setup & Configuration
@@ -93,6 +110,24 @@ vibe config --get <key> # Get a specific config value
93
110
  vibe config --set key=value # Set a config value
94
111
  ```
95
112
 
113
+ ### Plugin Management
114
+
115
+ Extend the agent with plugins that add CLI commands, routes, or both.
116
+
117
+ ```bash
118
+ vibe plugin list # List installed plugins
119
+ vibe plugin install @burdenoff/vibe-plugin-ssh # Install a plugin
120
+ vibe plugin install @burdenoff/vibe-plugin-ai # Install AI tools plugin
121
+ vibe plugin remove @burdenoff/vibe-plugin-ssh # Remove a plugin
122
+ ```
123
+
124
+ **Available Plugins:**
125
+
126
+ | Plugin | Description |
127
+ | ---------------------------- | ------------------------------------------------------ |
128
+ | `@burdenoff/vibe-plugin-ssh` | SSH connections & port forwarding |
129
+ | `@burdenoff/vibe-plugin-ai` | AI tool management (Claude Code, Codex, Copilot, etc.) |
130
+
96
131
  ### Tunnel Management
97
132
 
98
133
  Manage cloudflared tunnels that expose local ports via public URLs.
@@ -197,9 +232,10 @@ The agent runs as a Fastify HTTP server with:
197
232
  - **SQLite** database for local state (sessions, connections, tunnels, tasks, config)
198
233
  - **tmux** integration for terminal multiplexing
199
234
  - **cloudflared** for secure tunnel management
200
- - **ssh2** for SSH connection management
235
+ - **Plugin system** for extensibility (SSH, AI tools, and custom plugins)
201
236
  - **WebSocket** proxy for real-time terminal streaming
202
237
  - **API key** authentication on all endpoints
238
+ - **Daemon mode** with proper process management (no SIGPIPE crashes)
203
239
 
204
240
  ### System Dependencies
205
241
 
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAoC3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAWD,wBAAsB,WAAW,uSAigBhC;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,EAAE,EAAE,aAAa,CAAC;QAClB,EAAE,EAAE,cAAc,CAAC;KACpB;CACF"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAO9B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAqC3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAWD,wBAAsB,WAAW,uSA6iBhC;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,EAAE,EAAE,aAAa,CAAC;QAClB,EAAE,EAAE,cAAc,CAAC;KACpB;CACF"}
package/dist/app.js CHANGED
@@ -3,6 +3,8 @@ import cors from "@fastify/cors";
3
3
  import helmet from "@fastify/helmet";
4
4
  import os from "node:os";
5
5
  import crypto from "node:crypto";
6
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
7
+ import { join } from "node:path";
6
8
  import { Server as SocketIOServer } from "socket.io";
7
9
  import { WebSocketServer, WebSocket } from "ws";
8
10
  import AgentDatabase from "./db/schema.js";
@@ -19,6 +21,7 @@ import { projectRoutes } from "./routes/projects.js";
19
21
  import { moduleRegistryRoutes } from "./routes/moduleRegistry.js";
20
22
  import { tunnelRoutes, getAgentTunnelUrl, startAgentTunnel, stopAgentTunnel, } from "./routes/tunnel.js";
21
23
  import { bootstrap, checkDependencies } from "./services/bootstrap.js";
24
+ import { pluginManager } from "./services/plugin-manager.js";
22
25
  // ── Agent API Key ──────────────────────────────────────────────────────
23
26
  // Generated fresh on every agent start/restart. Must be provided via
24
27
  // `x-agent-api-key` header (or `apiKey` query param) for all requests
@@ -48,8 +51,45 @@ function getMachineFingerprint() {
48
51
  return crypto.createHash("sha256").update(raw).digest("hex").substring(0, 16);
49
52
  }
50
53
  export async function startServer() {
51
- // Generate a fresh API key for this agent instance
52
- agentApiKey = generateAgentApiKey();
54
+ // ── Resolve API Key ──────────────────────────────────────────────────
55
+ // Priority: 1. AGENT_API_KEY env var
56
+ // 2. static-api-key from ~/.vibecontrols/config.json
57
+ // 3. Generate a fresh random key
58
+ const configDir = join(os.homedir(), ".vibecontrols");
59
+ const configFile = join(configDir, "config.json");
60
+ let staticKey;
61
+ // Check env var first
62
+ if (process.env.AGENT_API_KEY) {
63
+ staticKey = process.env.AGENT_API_KEY;
64
+ }
65
+ else {
66
+ // Check config file for static-api-key
67
+ try {
68
+ if (existsSync(configFile)) {
69
+ const config = JSON.parse(readFileSync(configFile, "utf8"));
70
+ const cfgKey = config["static-api-key"];
71
+ if (cfgKey && cfgKey !== "false") {
72
+ if (cfgKey === "true") {
73
+ // Auto-generate a persistent key and save it
74
+ const generated = generateAgentApiKey();
75
+ config["static-api-key"] = generated;
76
+ mkdirSync(configDir, { recursive: true });
77
+ writeFileSync(configFile, JSON.stringify(config, null, 2));
78
+ staticKey = generated;
79
+ console.log("🔑 Generated and saved a persistent static API key.");
80
+ }
81
+ else {
82
+ // Explicit key value
83
+ staticKey = cfgKey;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ catch {
89
+ // Config read failed — fall through to random key
90
+ }
91
+ }
92
+ agentApiKey = staticKey || generateAgentApiKey();
53
93
  const app = Fastify({
54
94
  logger: process.env.NODE_ENV === "development"
55
95
  ? {
@@ -405,6 +445,10 @@ export async function startServer() {
405
445
  });
406
446
  // Make io available to routes
407
447
  app.decorate("io", io);
448
+ // ── Plugin lifecycle: onServerStart ─────────────────────────────────
449
+ // Load all registered plugins and let them register routes/hooks.
450
+ await pluginManager.loadAll();
451
+ await pluginManager.dispatchServerStart(app);
408
452
  // ── Terminal WebSocket upgrade handler ──────────────────────────────
409
453
  // Install this in onReady hook so that:
410
454
  // 1. Fastify plugins (including terminalProxy) have initialized
@@ -452,6 +496,8 @@ export async function startServer() {
452
496
  });
453
497
  // Graceful shutdown
454
498
  app.addHook("onClose", async () => {
499
+ // Plugin lifecycle: onServerStop
500
+ await pluginManager.dispatchServerStop(app);
455
501
  db.close();
456
502
  io.close();
457
503
  });
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -3,9 +3,12 @@ import "dotenv/config";
3
3
  import { Command } from "commander";
4
4
  import { AgentService } from "./services/agent.service.js";
5
5
  import { ServiceManager } from "./services/service-manager.js";
6
- import { readFileSync } from "fs";
6
+ import { findAvailablePort } from "./services/port-utils.js";
7
+ import { pluginManager } from "./services/plugin-manager.js";
8
+ import { readFileSync, existsSync } from "fs";
7
9
  import { join, dirname } from "path";
8
10
  import { fileURLToPath } from "url";
11
+ import { homedir } from "os";
9
12
  const __filename = fileURLToPath(import.meta.url);
10
13
  const __dirname = dirname(__filename);
11
14
  // Read package.json for version
@@ -190,8 +193,53 @@ program
190
193
  .option("--db-path <path>", "SQLite database path", "./vibecontrols-agent.db")
191
194
  .action(async (options) => {
192
195
  try {
196
+ // ── Auto-run setup on first run (no DB exists) ─────────────────
197
+ const dbPath = options.dbPath;
198
+ const configDir = join(homedir(), ".vibecontrols");
199
+ const firstRun = !existsSync(dbPath) && !existsSync(join(configDir, "agents.json"));
200
+ if (firstRun) {
201
+ console.log("\n \x1b[1m🎉 First run detected!\x1b[0m Running initial setup...\n");
202
+ try {
203
+ const { bootstrap, checkDependencies } = await import("./services/bootstrap.js");
204
+ const deps = checkDependencies();
205
+ const missing = Object.entries(deps).filter(([, v]) => !v.available);
206
+ if (missing.length > 0) {
207
+ console.log(` 📦 Missing dependencies: ${missing.map(([k]) => k).join(", ")}`);
208
+ console.log(" Running auto-bootstrap...\n");
209
+ const results = await bootstrap({ verbose: true });
210
+ const failed = results.filter((r) => r.status === "failed");
211
+ if (failed.length > 0) {
212
+ console.warn(` ⚠️ Could not install: ${failed.map((f) => f.tool).join(", ")}`);
213
+ console.warn(" Some features may not work. Run `vibe setup` for manual install.\n");
214
+ }
215
+ else {
216
+ console.log(" ✅ All dependencies bootstrapped successfully!\n");
217
+ }
218
+ }
219
+ else {
220
+ console.log(" ✅ All system dependencies verified.\n");
221
+ }
222
+ }
223
+ catch (err) {
224
+ console.warn(` ⚠️ Auto-setup failed: ${err instanceof Error ? err.message : err}`);
225
+ console.warn(" Run `vibe setup` manually to install dependencies.\n");
226
+ }
227
+ }
228
+ // ── Port conflict detection ────────────────────────────────────
229
+ let port = parseInt(options.port);
230
+ const requestedPort = port;
231
+ const available = await findAvailablePort(port, "0.0.0.0", 1);
232
+ if (available !== port) {
233
+ // Requested port is busy — find next available
234
+ const nextPort = await findAvailablePort(port + 1);
235
+ if (!nextPort) {
236
+ fail(`Port ${port} is already in use and no available port found in range ${port + 1}–${port + 20}.`);
237
+ }
238
+ console.log(` \x1b[33m⚠\x1b[0m Port ${requestedPort} is in use. Auto-selecting port \x1b[1m${nextPort}\x1b[0m instead.\n`);
239
+ port = nextPort;
240
+ }
193
241
  const config = {
194
- port: parseInt(options.port),
242
+ port,
195
243
  name: options.name,
196
244
  daemon: options.daemon,
197
245
  dbPath: options.dbPath,
@@ -460,6 +508,52 @@ program
460
508
  fail(`Setup failed: ${error instanceof Error ? error.message : error}`);
461
509
  }
462
510
  });
511
+ // ─── Update ───────────────────────────────────────────────────────────────────
512
+ program
513
+ .command("update")
514
+ .description("Update vibe to the latest version")
515
+ .option("--check", "Only check for updates without installing", false)
516
+ .action(async (options) => {
517
+ try {
518
+ const { execSync } = await import("child_process");
519
+ // Get current version
520
+ console.log(`\n Current version: \x1b[1mv${packageVersion}\x1b[0m`);
521
+ // Check latest version on npm
522
+ let latestVersion = "(unknown)";
523
+ try {
524
+ latestVersion = execSync("npm view @burdenoff/vibe-agent version", {
525
+ encoding: "utf8",
526
+ timeout: 15000,
527
+ }).trim();
528
+ }
529
+ catch {
530
+ fail("Failed to check latest version. Are you online?");
531
+ }
532
+ console.log(` Latest version: \x1b[1mv${latestVersion}\x1b[0m`);
533
+ if (latestVersion === packageVersion) {
534
+ console.log("\n \x1b[32m✓ Already up to date.\x1b[0m\n");
535
+ return;
536
+ }
537
+ if (options.check) {
538
+ console.log(`\n Run \x1b[1mvibe update\x1b[0m to install v${latestVersion}.\n`);
539
+ return;
540
+ }
541
+ console.log(`\n Updating to v${latestVersion}...`);
542
+ try {
543
+ execSync("npm install -g @burdenoff/vibe-agent@latest", {
544
+ stdio: "inherit",
545
+ timeout: 120000,
546
+ });
547
+ console.log(`\n \x1b[32m✓ Updated to v${latestVersion}.\x1b[0m Restart any running agents with \x1b[1mvibe restart\x1b[0m.\n`);
548
+ }
549
+ catch {
550
+ fail("Update failed. Try manually: npm install -g @burdenoff/vibe-agent@latest");
551
+ }
552
+ }
553
+ catch (error) {
554
+ fail(`Update failed: ${error instanceof Error ? error.message : error}`);
555
+ }
556
+ });
463
557
  // ─── Config ───────────────────────────────────────────────────────────────────
464
558
  program
465
559
  .command("config")
@@ -1169,5 +1263,68 @@ program
1169
1263
  }
1170
1264
  });
1171
1265
  // ═══════════════════════════════════════════════════════════════════════════════
1172
- program.parse();
1266
+ // Plugin Commands
1267
+ // ═══════════════════════════════════════════════════════════════════════════════
1268
+ const pluginCmd = program.command("plugin").description("Manage vibe plugins");
1269
+ pluginCmd
1270
+ .command("list")
1271
+ .description("List installed plugins")
1272
+ .action(async () => {
1273
+ const registry = pluginManager.loadRegistry();
1274
+ if (registry.length === 0) {
1275
+ console.log(" No plugins installed.");
1276
+ console.log("\n Install plugins with: \x1b[1mvibe plugin install <package>\x1b[0m");
1277
+ console.log(" Available plugins:");
1278
+ console.log(" @burdenoff/vibe-plugin-ssh — SSH connections & port forwarding");
1279
+ console.log(" @burdenoff/vibe-plugin-ai — AI tool management\n");
1280
+ }
1281
+ else {
1282
+ formatTable(registry.map((e) => ({
1283
+ Name: e.pluginName,
1284
+ Package: e.packageName,
1285
+ Version: e.version,
1286
+ Installed: e.installedAt,
1287
+ })));
1288
+ }
1289
+ });
1290
+ pluginCmd
1291
+ .command("install")
1292
+ .description("Install a vibe plugin")
1293
+ .argument("<package>", "npm package name (e.g. @burdenoff/vibe-plugin-ssh)")
1294
+ .action(async (packageName) => {
1295
+ try {
1296
+ const entry = await pluginManager.install(packageName);
1297
+ console.log(`\n \x1b[32m✓ Plugin '${entry.pluginName}' (${entry.packageName}@${entry.version}) installed.\x1b[0m`);
1298
+ console.log(" Restart any running agents for the plugin to take effect.\n");
1299
+ }
1300
+ catch (error) {
1301
+ fail(`Plugin install failed: ${error instanceof Error ? error.message : error}`);
1302
+ }
1303
+ });
1304
+ pluginCmd
1305
+ .command("remove")
1306
+ .description("Remove a vibe plugin")
1307
+ .argument("<package>", "npm package name")
1308
+ .action(async (packageName) => {
1309
+ try {
1310
+ await pluginManager.remove(packageName);
1311
+ console.log(`\n \x1b[32m✓ Plugin removed.\x1b[0m\n`);
1312
+ }
1313
+ catch (error) {
1314
+ fail(`Plugin remove failed: ${error instanceof Error ? error.message : error}`);
1315
+ }
1316
+ });
1317
+ // ═══════════════════════════════════════════════════════════════════════════════
1318
+ // ── Load plugins & dispatch CLI setup before parsing ─────────────────────────
1319
+ async function main() {
1320
+ // Load all registered plugins (silently skips failures)
1321
+ await pluginManager.loadAll();
1322
+ // Let plugins register their CLI commands
1323
+ await pluginManager.dispatchCliSetup(program);
1324
+ program.parse();
1325
+ }
1326
+ main().catch((err) => {
1327
+ console.error(`\x1b[31mFatal:\x1b[0m ${err instanceof Error ? err.message : err}`);
1328
+ process.exit(1);
1329
+ });
1173
1330
  //# sourceMappingURL=cli.js.map