minivibe 0.1.4 → 0.2.1
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/LICENSE +21 -0
- package/README.md +71 -38
- package/agent/agent.js +362 -55
- package/e2e.js +677 -0
- package/package.json +13 -10
- package/pty-wrapper-node.js +18 -0
- package/pty-wrapper.py +17 -0
- package/vibe.js +1286 -187
- package/GETTING_STARTED.md +0 -241
- package/login.html +0 -331
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-2025 MiniVibe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -11,26 +11,23 @@ CLI wrapper for Claude Code with mobile remote control via MiniVibe iOS app.
|
|
|
11
11
|
- Token usage tracking
|
|
12
12
|
- Headless authentication for servers (EC2, etc.)
|
|
13
13
|
- Skip permissions mode for automation
|
|
14
|
+
- **End-to-end encryption** - Optional E2E encryption so bridge server cannot read message content
|
|
14
15
|
|
|
15
16
|
## Quick Start
|
|
16
17
|
|
|
17
18
|
```bash
|
|
18
|
-
# Install
|
|
19
|
+
# Install
|
|
19
20
|
npm install -g minivibe
|
|
20
21
|
|
|
21
|
-
#
|
|
22
|
-
vibe --login
|
|
23
|
-
vibe --login --headless # Server/EC2 (device code)
|
|
24
|
-
|
|
25
|
-
# Option 1: Direct bridge connection
|
|
26
|
-
vibe --bridge wss://ws.neng.ai
|
|
22
|
+
# Login (one-time)
|
|
23
|
+
vibe --login
|
|
27
24
|
|
|
28
|
-
#
|
|
29
|
-
vibe
|
|
30
|
-
vibe
|
|
25
|
+
# Start coding with remote control!
|
|
26
|
+
vibe
|
|
27
|
+
vibe "Fix the bug in main.js"
|
|
31
28
|
```
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
> **Note:** For local-only use without remote control, just run `claude` directly.
|
|
34
31
|
|
|
35
32
|
## Installation
|
|
36
33
|
|
|
@@ -47,8 +44,8 @@ This installs two commands:
|
|
|
47
44
|
### From Source
|
|
48
45
|
|
|
49
46
|
```bash
|
|
50
|
-
git clone https://github.com/
|
|
51
|
-
cd
|
|
47
|
+
git clone https://github.com/minivibeapp/minivibe.git
|
|
48
|
+
cd minivibe
|
|
52
49
|
npm install
|
|
53
50
|
npm link
|
|
54
51
|
```
|
|
@@ -81,22 +78,24 @@ Get token from MiniVibe iOS app: Settings > Copy Token for CLI.
|
|
|
81
78
|
|
|
82
79
|
## Usage Modes
|
|
83
80
|
|
|
84
|
-
### Direct
|
|
81
|
+
### Direct Mode (Default)
|
|
85
82
|
|
|
86
|
-
|
|
83
|
+
Just run `vibe` after logging in:
|
|
87
84
|
|
|
88
85
|
```bash
|
|
89
|
-
vibe
|
|
90
|
-
vibe
|
|
86
|
+
vibe # Start session
|
|
87
|
+
vibe "Fix the bug" # With initial prompt
|
|
88
|
+
vibe --e2e # With end-to-end encryption
|
|
91
89
|
```
|
|
92
90
|
|
|
93
91
|
### Agent Mode (Recommended for Servers)
|
|
94
92
|
|
|
95
|
-
Use a local agent to manage sessions:
|
|
93
|
+
Use a local agent to manage multiple sessions:
|
|
96
94
|
|
|
97
95
|
```bash
|
|
98
96
|
# Terminal 1: Start the agent (runs continuously)
|
|
99
|
-
vibe-agent --
|
|
97
|
+
vibe-agent --login # First time only
|
|
98
|
+
vibe-agent # Start daemon
|
|
100
99
|
|
|
101
100
|
# Terminal 2+: Create sessions via agent
|
|
102
101
|
vibe --agent
|
|
@@ -110,30 +109,25 @@ vibe --agent --name "Backend Work"
|
|
|
110
109
|
- Sessions survive network hiccups
|
|
111
110
|
- Cleaner process management
|
|
112
111
|
|
|
113
|
-
### Local Mode (No Bridge)
|
|
114
|
-
|
|
115
|
-
Run without remote control:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
vibe # Interactive
|
|
119
|
-
vibe "Explain this code" # With prompt
|
|
120
|
-
```
|
|
121
|
-
|
|
122
112
|
## Options
|
|
123
113
|
|
|
124
114
|
### vibe
|
|
125
115
|
|
|
126
116
|
| Option | Description |
|
|
127
117
|
|--------|-------------|
|
|
128
|
-
| `--bridge <url>` | Connect to bridge server |
|
|
129
|
-
| `--agent [url]` | Connect via local vibe-agent (default: auto-discover) |
|
|
130
|
-
| `--name <name>` | Name this session (shown in mobile app) |
|
|
131
|
-
| `--resume <id>` | Resume a previous session |
|
|
132
118
|
| `--login` | Sign in with Google |
|
|
133
119
|
| `--headless` | Use device code flow for headless environments |
|
|
120
|
+
| `--agent [url]` | Connect via local vibe-agent (default: auto-discover) |
|
|
121
|
+
| `--name <name>` | Name this session (shown in mobile app) |
|
|
122
|
+
| `--resume <id>` | Resume a previous session (auto-detects directory) |
|
|
123
|
+
| `--attach <id>` | Attach to running session via local agent |
|
|
124
|
+
| `--remote <id>` | Remote control session via bridge (no local Claude needed) |
|
|
125
|
+
| `--list` | List running sessions on local agent |
|
|
126
|
+
| `--e2e` | Enable end-to-end encryption (auto key exchange with iOS) |
|
|
127
|
+
| `--dangerously-skip-permissions` | Auto-approve all tool executions |
|
|
128
|
+
| `--bridge <url>` | Override bridge URL (default: wss://ws.minivibeapp.com) |
|
|
134
129
|
| `--token <token>` | Set Firebase auth token manually |
|
|
135
130
|
| `--logout` | Remove stored auth token |
|
|
136
|
-
| `--dangerously-skip-permissions` | Auto-approve all tool executions |
|
|
137
131
|
| `--node-pty` | Use Node.js PTY wrapper (required for Windows) |
|
|
138
132
|
| `--help, -h` | Show help message |
|
|
139
133
|
|
|
@@ -141,8 +135,11 @@ vibe "Explain this code" # With prompt
|
|
|
141
135
|
|
|
142
136
|
| Option | Description |
|
|
143
137
|
|--------|-------------|
|
|
144
|
-
| `--
|
|
145
|
-
| `--
|
|
138
|
+
| `--login` | Sign in via device code flow |
|
|
139
|
+
| `--name <name>` | Set host display name |
|
|
140
|
+
| `--status` | Show current status and exit |
|
|
141
|
+
| `--bridge <url>` | Override bridge URL (default: wss://ws.minivibeapp.com) |
|
|
142
|
+
| `--token <token>` | Use specific Firebase token |
|
|
146
143
|
| `--help, -h` | Show help message |
|
|
147
144
|
|
|
148
145
|
## Skip Permissions Mode
|
|
@@ -150,12 +147,48 @@ vibe "Explain this code" # With prompt
|
|
|
150
147
|
For automated/headless environments where you trust the execution context:
|
|
151
148
|
|
|
152
149
|
```bash
|
|
153
|
-
vibe --dangerously-skip-permissions
|
|
150
|
+
vibe --dangerously-skip-permissions
|
|
154
151
|
vibe --dangerously-skip-permissions --agent
|
|
155
152
|
```
|
|
156
153
|
|
|
157
154
|
**Warning:** This mode auto-approves ALL tool executions (commands, file writes, etc.) without prompting. Only use in trusted/sandboxed environments.
|
|
158
155
|
|
|
156
|
+
## End-to-End Encryption
|
|
157
|
+
|
|
158
|
+
Enable E2E encryption to ensure the bridge server cannot read your message content:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Start with E2E encryption enabled
|
|
162
|
+
vibe --e2e
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Key exchange happens automatically when both CLI and iOS connect to the bridge:
|
|
166
|
+
|
|
167
|
+
1. Enable E2E in MiniVibe iOS app: **Settings > Security > E2E Encryption**
|
|
168
|
+
2. Start CLI with `--e2e` flag
|
|
169
|
+
3. Both sides exchange public keys automatically on connect
|
|
170
|
+
4. Encryption is established - no QR scanning needed!
|
|
171
|
+
|
|
172
|
+
### How It Works
|
|
173
|
+
|
|
174
|
+
- Uses **X25519** key exchange (same as Signal, WhatsApp)
|
|
175
|
+
- Messages encrypted with **AES-256-GCM**
|
|
176
|
+
- Keys derived using **HKDF-SHA256**
|
|
177
|
+
- Bridge server sees message routing info but cannot read content
|
|
178
|
+
|
|
179
|
+
### Key Storage
|
|
180
|
+
|
|
181
|
+
| Location | Description |
|
|
182
|
+
|----------|-------------|
|
|
183
|
+
| `~/.vibe/e2e-keys.json` | CLI keypair and peer info |
|
|
184
|
+
| iOS Keychain | iOS keypair and peer info |
|
|
185
|
+
|
|
186
|
+
### Security Notes
|
|
187
|
+
|
|
188
|
+
- E2E is optional and backward compatible
|
|
189
|
+
- Once paired, encryption persists across sessions
|
|
190
|
+
- To re-pair: delete `~/.vibe/e2e-keys.json` and reset in iOS Settings
|
|
191
|
+
|
|
159
192
|
## Architecture
|
|
160
193
|
|
|
161
194
|
```
|
|
@@ -165,7 +198,7 @@ vibe --dangerously-skip-permissions --agent
|
|
|
165
198
|
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
|
|
166
199
|
```
|
|
167
200
|
|
|
168
|
-
**Direct mode:** `vibe
|
|
201
|
+
**Direct mode:** `vibe` connects directly to bridge server
|
|
169
202
|
|
|
170
203
|
**Agent mode:** `vibe --agent` connects to local `vibe-agent`, which manages bridge connection
|
|
171
204
|
|
|
@@ -196,7 +229,7 @@ May also need Visual Studio Build Tools and Python for native compilation.
|
|
|
196
229
|
| Path | Description |
|
|
197
230
|
|------|-------------|
|
|
198
231
|
| `~/.vibe/auth.json` | Stored authentication (token + refresh token) |
|
|
199
|
-
| `~/.vibe/
|
|
232
|
+
| `~/.vibe/e2e-keys.json` | E2E encryption keypair and peer info |
|
|
200
233
|
| `~/.vibe-agent/port` | Agent port file for auto-discovery |
|
|
201
234
|
|
|
202
235
|
## License
|