@burdenoff/vibe-agent 1.0.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.
Files changed (100) hide show
  1. package/.env.example +8 -0
  2. package/LICENSE +22 -0
  3. package/README.md +290 -0
  4. package/dist/app.d.ts +15 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +445 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +1043 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/db/schema.d.ts +145 -0
  13. package/dist/db/schema.d.ts.map +1 -0
  14. package/dist/db/schema.js +536 -0
  15. package/dist/db/schema.js.map +1 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +61 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/middleware/ModuleAuth.d.ts +61 -0
  21. package/dist/middleware/ModuleAuth.d.ts.map +1 -0
  22. package/dist/middleware/ModuleAuth.js +220 -0
  23. package/dist/middleware/ModuleAuth.js.map +1 -0
  24. package/dist/middleware/auth.d.ts +3 -0
  25. package/dist/middleware/auth.d.ts.map +1 -0
  26. package/dist/middleware/auth.js +11 -0
  27. package/dist/middleware/auth.js.map +1 -0
  28. package/dist/migrations/remove-notes-prompts.d.ts +13 -0
  29. package/dist/migrations/remove-notes-prompts.d.ts.map +1 -0
  30. package/dist/migrations/remove-notes-prompts.js +148 -0
  31. package/dist/migrations/remove-notes-prompts.js.map +1 -0
  32. package/dist/routes/bookmarks.d.ts +3 -0
  33. package/dist/routes/bookmarks.d.ts.map +1 -0
  34. package/dist/routes/bookmarks.js +186 -0
  35. package/dist/routes/bookmarks.js.map +1 -0
  36. package/dist/routes/config.d.ts +3 -0
  37. package/dist/routes/config.d.ts.map +1 -0
  38. package/dist/routes/config.js +108 -0
  39. package/dist/routes/config.js.map +1 -0
  40. package/dist/routes/files.d.ts +3 -0
  41. package/dist/routes/files.d.ts.map +1 -0
  42. package/dist/routes/files.js +471 -0
  43. package/dist/routes/files.js.map +1 -0
  44. package/dist/routes/git.d.ts +3 -0
  45. package/dist/routes/git.d.ts.map +1 -0
  46. package/dist/routes/git.js +498 -0
  47. package/dist/routes/git.js.map +1 -0
  48. package/dist/routes/moduleRegistry.d.ts +41 -0
  49. package/dist/routes/moduleRegistry.d.ts.map +1 -0
  50. package/dist/routes/moduleRegistry.js +356 -0
  51. package/dist/routes/moduleRegistry.js.map +1 -0
  52. package/dist/routes/notifications.d.ts +3 -0
  53. package/dist/routes/notifications.d.ts.map +1 -0
  54. package/dist/routes/notifications.js +250 -0
  55. package/dist/routes/notifications.js.map +1 -0
  56. package/dist/routes/port-forward.d.ts +3 -0
  57. package/dist/routes/port-forward.d.ts.map +1 -0
  58. package/dist/routes/port-forward.js +205 -0
  59. package/dist/routes/port-forward.js.map +1 -0
  60. package/dist/routes/projects.d.ts +3 -0
  61. package/dist/routes/projects.d.ts.map +1 -0
  62. package/dist/routes/projects.js +442 -0
  63. package/dist/routes/projects.js.map +1 -0
  64. package/dist/routes/ssh.d.ts +3 -0
  65. package/dist/routes/ssh.d.ts.map +1 -0
  66. package/dist/routes/ssh.js +192 -0
  67. package/dist/routes/ssh.js.map +1 -0
  68. package/dist/routes/tasks.d.ts +3 -0
  69. package/dist/routes/tasks.d.ts.map +1 -0
  70. package/dist/routes/tasks.js +183 -0
  71. package/dist/routes/tasks.js.map +1 -0
  72. package/dist/routes/tmux.d.ts +3 -0
  73. package/dist/routes/tmux.d.ts.map +1 -0
  74. package/dist/routes/tmux.js +1191 -0
  75. package/dist/routes/tmux.js.map +1 -0
  76. package/dist/routes/tunnel.d.ts +25 -0
  77. package/dist/routes/tunnel.d.ts.map +1 -0
  78. package/dist/routes/tunnel.js +449 -0
  79. package/dist/routes/tunnel.js.map +1 -0
  80. package/dist/services/ModulePermissions.d.ts +100 -0
  81. package/dist/services/ModulePermissions.d.ts.map +1 -0
  82. package/dist/services/ModulePermissions.js +312 -0
  83. package/dist/services/ModulePermissions.js.map +1 -0
  84. package/dist/services/ModuleRegistryService.d.ts +152 -0
  85. package/dist/services/ModuleRegistryService.d.ts.map +1 -0
  86. package/dist/services/ModuleRegistryService.js +522 -0
  87. package/dist/services/ModuleRegistryService.js.map +1 -0
  88. package/dist/services/agent.service.d.ts +19 -0
  89. package/dist/services/agent.service.d.ts.map +1 -0
  90. package/dist/services/agent.service.js +88 -0
  91. package/dist/services/agent.service.js.map +1 -0
  92. package/dist/services/bootstrap.d.ts +22 -0
  93. package/dist/services/bootstrap.d.ts.map +1 -0
  94. package/dist/services/bootstrap.js +206 -0
  95. package/dist/services/bootstrap.js.map +1 -0
  96. package/dist/services/service-manager.d.ts +50 -0
  97. package/dist/services/service-manager.d.ts.map +1 -0
  98. package/dist/services/service-manager.js +382 -0
  99. package/dist/services/service-manager.js.map +1 -0
  100. package/package.json +107 -0
package/.env.example ADDED
@@ -0,0 +1,8 @@
1
+ PORT=3005
2
+ NODE_ENV=development
3
+ CORS_ORIGIN="http://localhost:3000"
4
+ AGENT_API_KEY="vibecontrols-agent-secret-key"
5
+ DB_PATH="./vibecontrols-agent.db"
6
+
7
+ # Set to 'false' to disable auto-starting the cloudflared tunnel on boot
8
+ # AGENT_TUNNEL=false
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Proprietary License
2
+
3
+ Copyright (c) 2025-2026 Burdenoff Consultancy Services Pvt. Ltd. All rights reserved.
4
+
5
+ This software and associated documentation files (the "Software") are the proprietary
6
+ property of Burdenoff Consultancy Services Pvt. Ltd. and its affiliates.
7
+
8
+ UNAUTHORIZED COPYING, MODIFICATION, DISTRIBUTION, OR USE OF THIS SOFTWARE, VIA ANY
9
+ MEDIUM, IS STRICTLY PROHIBITED.
10
+
11
+ The Software is provided under a proprietary license. You may use the Software only in
12
+ accordance with the terms of your license agreement with Burdenoff Consultancy Services
13
+ Pvt. Ltd.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17
+ PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19
+ OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20
+ OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ For licensing inquiries, contact: contact@vibecontrols.com
package/README.md ADDED
@@ -0,0 +1,290 @@
1
+ # @burdenoff/vibe-agent
2
+
3
+ Remote development environment management CLI with terminal multiplexing, SSH tunneling, port forwarding, and cloudflared integration.
4
+
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
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install -g @burdenoff/vibe-agent
11
+ ```
12
+
13
+ Requires **Node.js >= 18**.
14
+
15
+ ## Quick Start
16
+
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)
25
+ vibe start
26
+
27
+ # 4. Or start as a background daemon
28
+ vibe start -d
29
+
30
+ # 5. Verify it's running
31
+ vibe health
32
+ vibe status
33
+ ```
34
+
35
+ ## Configuration
36
+
37
+ Create a `.env` file in your working directory or set environment variables:
38
+
39
+ | Variable | Description | Default |
40
+ |----------|-------------|---------|
41
+ | `PORT` | Agent server port | `3005` |
42
+ | `NODE_ENV` | Environment | `development` |
43
+ | `CORS_ORIGIN` | Allowed CORS origin | `http://localhost:3000` |
44
+ | `AGENT_API_KEY` | API key for authentication | (auto-generated) |
45
+ | `DB_PATH` | SQLite database path | `./vibecontrols-agent.db` |
46
+ | `AGENT_TUNNEL` | Auto-start cloudflared tunnel | `true` |
47
+
48
+ An `.env.example` file is included in the package for reference.
49
+
50
+ ## Command Reference
51
+
52
+ ### Core Commands
53
+
54
+ ```bash
55
+ vibe start # Start agent (foreground)
56
+ vibe start -d # Start as daemon
57
+ vibe start -p 4000 # Start on custom port
58
+ vibe start -n myagent # Start with instance name
59
+ vibe start --db-path ~/my.db # Custom database path
60
+
61
+ vibe stop # Stop default instance
62
+ vibe stop -n myagent # Stop named instance
63
+ vibe stop --all # Stop all instances
64
+
65
+ vibe restart # Restart default instance
66
+ vibe restart -n myagent # Restart named instance
67
+
68
+ vibe status # Show all instance statuses
69
+ vibe status -n myagent # Show specific instance status
70
+
71
+ vibe list # List all instances
72
+ vibe kill # Force kill default instance
73
+ vibe kill --all # Force kill all
74
+
75
+ vibe logs # Show logs (default instance)
76
+ vibe logs -f # Follow logs (tail -f)
77
+ vibe logs --tail 50 # Last 50 lines
78
+
79
+ vibe health # Health check via HTTP
80
+ vibe info # Detailed version/system info
81
+ vibe key # Display the agent API key
82
+ vibe system # System info from running agent
83
+ ```
84
+
85
+ ### Setup & Configuration
86
+
87
+ ```bash
88
+ vibe setup # Install dependencies (tmux, ttyd, cloudflared)
89
+ vibe setup --check # Check without installing
90
+
91
+ vibe config --list # List all config values
92
+ vibe config --get <key> # Get a specific config value
93
+ vibe config --set key=value # Set a config value
94
+ ```
95
+
96
+ ### Tunnel Management
97
+
98
+ Manage cloudflared tunnels that expose local ports via public URLs.
99
+
100
+ ```bash
101
+ # Per-port tunnels
102
+ vibe tunnel list # List all tunnels
103
+ vibe tunnel status # Overview (total, active, inactive, errored)
104
+ vibe tunnel start -p 8080 # Expose local port 8080
105
+ vibe tunnel start -p 3000 -s myapp # With preferred subdomain
106
+ vibe tunnel stop -i <id> # Stop a tunnel
107
+ vibe tunnel delete -i <id> # Delete a tunnel
108
+
109
+ # Agent tunnel (main agent cloudflared tunnel)
110
+ vibe tunnel agent # Show agent tunnel status
111
+ vibe tunnel agent --start # Start agent tunnel
112
+ vibe tunnel agent --stop # Stop agent tunnel
113
+ ```
114
+
115
+ ### Terminal Sessions (tmux)
116
+
117
+ ```bash
118
+ vibe session list # List managed sessions
119
+ vibe session list --system # Include unmanaged tmux sessions
120
+
121
+ vibe session create --name dev # Create session named "dev"
122
+ vibe session create --name dev --cwd ~/project --command "npm run dev"
123
+
124
+ vibe session kill -i <id> # Kill a session
125
+ vibe session exec -i <id> -c "ls -la" # Run command in session
126
+ vibe session capture -i <id> # Capture session output
127
+ ```
128
+
129
+ ### SSH Connections
130
+
131
+ ```bash
132
+ vibe ssh list # List saved connections
133
+
134
+ vibe ssh add --name prod \
135
+ --host 10.0.1.50 \
136
+ --user deploy \
137
+ --port 22 \
138
+ --key ~/.ssh/id_rsa # Add a connection
139
+
140
+ vibe ssh remove -i <id> # Remove a connection
141
+ vibe ssh test -i <id> # Test connectivity
142
+ vibe ssh exec -i <id> -c "uptime" # Execute remote command
143
+ ```
144
+
145
+ ### Port Forwarding
146
+
147
+ ```bash
148
+ vibe forward list # List all forwards
149
+
150
+ vibe forward create \
151
+ --local 5432 \
152
+ --remote-host db.internal \
153
+ --remote-port 5432 \
154
+ --server prod # Create a forward rule
155
+
156
+ vibe forward start -i <id> # Start forwarding
157
+ vibe forward stop -i <id> # Stop forwarding
158
+ vibe forward delete -i <id> # Delete forward rule
159
+ ```
160
+
161
+ ### Background Tasks
162
+
163
+ ```bash
164
+ vibe task list # List all tasks
165
+ vibe task list --status running # Filter by status
166
+ vibe task run -c "npm test" # Run command as background task
167
+ vibe task run -c "make build" --cwd ~/project
168
+ ```
169
+
170
+ ### Notifications
171
+
172
+ ```bash
173
+ vibe notify list # List all notifications
174
+ vibe notify list --unread # Show only unread
175
+ vibe notify read-all # Mark all as read
176
+ ```
177
+
178
+ ## Global Options
179
+
180
+ Every subcommand that communicates with a running agent accepts:
181
+
182
+ ```bash
183
+ --agent-url <url> # Default: http://localhost:3005
184
+ ```
185
+
186
+ This lets you manage remote agents or agents on non-default ports:
187
+
188
+ ```bash
189
+ vibe health --agent-url http://192.168.1.10:3005
190
+ vibe tunnel list --agent-url http://localhost:4000
191
+ ```
192
+
193
+ ## Architecture
194
+
195
+ The agent runs as a Fastify HTTP server with:
196
+
197
+ - **SQLite** database for local state (sessions, connections, tunnels, tasks, config)
198
+ - **tmux** integration for terminal multiplexing
199
+ - **cloudflared** for secure tunnel management
200
+ - **ssh2** for SSH connection management
201
+ - **WebSocket** proxy for real-time terminal streaming
202
+ - **API key** authentication on all endpoints
203
+
204
+ ### System Dependencies
205
+
206
+ | Tool | Purpose | Required |
207
+ |------|---------|----------|
208
+ | tmux | Terminal multiplexing | Yes |
209
+ | ttyd | Web-based terminal | Recommended |
210
+ | cloudflared | Tunnel management | For tunnels |
211
+ | Node.js 18+ | Runtime | Yes |
212
+
213
+ Run `vibe setup --check` to verify all dependencies.
214
+
215
+ ## REST API
216
+
217
+ When the agent is running, it exposes a REST API at `http://localhost:3005/api/` with 112 endpoints across these route groups:
218
+
219
+ - `/api/tmux/*` - Terminal session management
220
+ - `/api/ssh/*` - SSH connection management
221
+ - `/api/tunnel/*` - Per-port tunnel CRUD
222
+ - `/api/agent-tunnel/*` - Agent tunnel management
223
+ - `/api/port-forward/*` - Port forwarding
224
+ - `/api/tasks/*` - Background task management
225
+ - `/api/config/*` - Configuration & system info
226
+ - `/api/notifications/*` - Notification management
227
+ - `/api/files/*` - File operations
228
+ - `/api/git/*` - Git repository scanning
229
+ - `/api/bookmarks/*` - Command bookmarks
230
+ - `/api/projects/*` - Project scanning
231
+
232
+ Authentication: Include `x-agent-api-key` header with your API key.
233
+
234
+ ## Examples
235
+
236
+ ### Development Workflow
237
+
238
+ ```bash
239
+ # Start agent in the background
240
+ vibe start -d
241
+
242
+ # Set up a dev session
243
+ vibe session create --name frontend --cwd ~/app --command "npm run dev"
244
+ vibe session create --name backend --cwd ~/api --command "npm start"
245
+
246
+ # Expose your dev server publicly
247
+ vibe tunnel start -p 3000
248
+
249
+ # Check everything is running
250
+ vibe session list
251
+ vibe tunnel list
252
+ vibe health
253
+
254
+ # Later, clean up
255
+ vibe stop
256
+ ```
257
+
258
+ ### Remote Server Management
259
+
260
+ ```bash
261
+ # Save SSH connections
262
+ vibe ssh add --name staging --host staging.example.com --user deploy --key ~/.ssh/deploy
263
+ vibe ssh add --name production --host prod.example.com --user deploy --key ~/.ssh/deploy
264
+
265
+ # Test connections
266
+ vibe ssh test -i <staging-id>
267
+
268
+ # Run remote commands
269
+ vibe ssh exec -i <staging-id> -c "docker ps"
270
+ vibe ssh exec -i <production-id> -c "systemctl status nginx"
271
+
272
+ # Set up port forwarding to access remote databases
273
+ vibe forward create --local 5432 --remote-host localhost --remote-port 5432 --server staging
274
+ vibe forward start -i <forward-id>
275
+ ```
276
+
277
+ ## Part of the VibeControls Ecosystem
278
+
279
+ This agent is the local component of the [VibeControls](https://vibecontrols.com) development environment platform. It can operate standalone or connect to the VibeControls backend for centralized management across multiple machines.
280
+
281
+ ## Author
282
+
283
+ **Vignesh T.V.** ([@tvvignesh](https://github.com/tvvignesh))
284
+ [vignesh@burdenoff.com](mailto:vignesh@burdenoff.com)
285
+
286
+ ## License
287
+
288
+ Proprietary - Copyright 2025-2026 Burdenoff Consultancy Services Pvt. Ltd. All rights reserved.
289
+
290
+ See [LICENSE](./LICENSE) for details.
package/dist/app.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import Fastify from 'fastify';
2
+ import { Server as SocketIOServer } from 'socket.io';
3
+ import AgentDatabase from './db/schema.js';
4
+ /**
5
+ * Get the current agent API key.
6
+ */
7
+ export declare function getAgentApiKey(): string;
8
+ export declare function startServer(): Promise<Fastify.FastifyInstance<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, Fastify.FastifyBaseLogger, Fastify.FastifyTypeProviderDefault>>;
9
+ declare module 'fastify' {
10
+ interface FastifyInstance {
11
+ db: AgentDatabase;
12
+ io: SocketIOServer;
13
+ }
14
+ }
15
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +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;AA+B3C;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAWD,wBAAsB,WAAW,uSA4bhC;AAGD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,EAAE,EAAE,aAAa,CAAC;QAClB,EAAE,EAAE,cAAc,CAAC;KACpB;CACF"}