@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.
- package/.env.example +8 -0
- package/LICENSE +22 -0
- package/README.md +290 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +445 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1043 -0
- package/dist/cli.js.map +1 -0
- package/dist/db/schema.d.ts +145 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +536 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/ModuleAuth.d.ts +61 -0
- package/dist/middleware/ModuleAuth.d.ts.map +1 -0
- package/dist/middleware/ModuleAuth.js +220 -0
- package/dist/middleware/ModuleAuth.js.map +1 -0
- package/dist/middleware/auth.d.ts +3 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +11 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/migrations/remove-notes-prompts.d.ts +13 -0
- package/dist/migrations/remove-notes-prompts.d.ts.map +1 -0
- package/dist/migrations/remove-notes-prompts.js +148 -0
- package/dist/migrations/remove-notes-prompts.js.map +1 -0
- package/dist/routes/bookmarks.d.ts +3 -0
- package/dist/routes/bookmarks.d.ts.map +1 -0
- package/dist/routes/bookmarks.js +186 -0
- package/dist/routes/bookmarks.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +108 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/files.d.ts +3 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +471 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/git.d.ts +3 -0
- package/dist/routes/git.d.ts.map +1 -0
- package/dist/routes/git.js +498 -0
- package/dist/routes/git.js.map +1 -0
- package/dist/routes/moduleRegistry.d.ts +41 -0
- package/dist/routes/moduleRegistry.d.ts.map +1 -0
- package/dist/routes/moduleRegistry.js +356 -0
- package/dist/routes/moduleRegistry.js.map +1 -0
- package/dist/routes/notifications.d.ts +3 -0
- package/dist/routes/notifications.d.ts.map +1 -0
- package/dist/routes/notifications.js +250 -0
- package/dist/routes/notifications.js.map +1 -0
- package/dist/routes/port-forward.d.ts +3 -0
- package/dist/routes/port-forward.d.ts.map +1 -0
- package/dist/routes/port-forward.js +205 -0
- package/dist/routes/port-forward.js.map +1 -0
- package/dist/routes/projects.d.ts +3 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +442 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/ssh.d.ts +3 -0
- package/dist/routes/ssh.d.ts.map +1 -0
- package/dist/routes/ssh.js +192 -0
- package/dist/routes/ssh.js.map +1 -0
- package/dist/routes/tasks.d.ts +3 -0
- package/dist/routes/tasks.d.ts.map +1 -0
- package/dist/routes/tasks.js +183 -0
- package/dist/routes/tasks.js.map +1 -0
- package/dist/routes/tmux.d.ts +3 -0
- package/dist/routes/tmux.d.ts.map +1 -0
- package/dist/routes/tmux.js +1191 -0
- package/dist/routes/tmux.js.map +1 -0
- package/dist/routes/tunnel.d.ts +25 -0
- package/dist/routes/tunnel.d.ts.map +1 -0
- package/dist/routes/tunnel.js +449 -0
- package/dist/routes/tunnel.js.map +1 -0
- package/dist/services/ModulePermissions.d.ts +100 -0
- package/dist/services/ModulePermissions.d.ts.map +1 -0
- package/dist/services/ModulePermissions.js +312 -0
- package/dist/services/ModulePermissions.js.map +1 -0
- package/dist/services/ModuleRegistryService.d.ts +152 -0
- package/dist/services/ModuleRegistryService.d.ts.map +1 -0
- package/dist/services/ModuleRegistryService.js +522 -0
- package/dist/services/ModuleRegistryService.js.map +1 -0
- package/dist/services/agent.service.d.ts +19 -0
- package/dist/services/agent.service.d.ts.map +1 -0
- package/dist/services/agent.service.js +88 -0
- package/dist/services/agent.service.js.map +1 -0
- package/dist/services/bootstrap.d.ts +22 -0
- package/dist/services/bootstrap.d.ts.map +1 -0
- package/dist/services/bootstrap.js +206 -0
- package/dist/services/bootstrap.js.map +1 -0
- package/dist/services/service-manager.d.ts +50 -0
- package/dist/services/service-manager.d.ts.map +1 -0
- package/dist/services/service-manager.js +382 -0
- package/dist/services/service-manager.js.map +1 -0
- package/package.json +107 -0
package/.env.example
ADDED
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"}
|