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 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 globally from npm
19
+ # Install
19
20
  npm install -g minivibe
20
21
 
21
- # Authenticate (one-time)
22
- vibe --login # Desktop (opens browser)
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
- # Option 2: Agent mode (recommended for servers)
29
- vibe-agent --bridge wss://ws.neng.ai & # Start agent
30
- vibe --agent # Create sessions
25
+ # Start coding with remote control!
26
+ vibe
27
+ vibe "Fix the bug in main.js"
31
28
  ```
32
29
 
33
- See [GETTING_STARTED.md](GETTING_STARTED.md) for detailed setup instructions.
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/python3isfun/neng.git
51
- cd neng/vibe-cli
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 Bridge Mode
81
+ ### Direct Mode (Default)
85
82
 
86
- Connect directly to the bridge server:
83
+ Just run `vibe` after logging in:
87
84
 
88
85
  ```bash
89
- vibe --bridge wss://ws.neng.ai
90
- vibe --bridge wss://ws.neng.ai "Fix the bug in main.js"
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 --bridge wss://ws.neng.ai
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
- | `--bridge <url>` | Bridge server URL (required) |
145
- | `--port <port>` | Local WebSocket port (default: 9999) |
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 --bridge wss://ws.neng.ai
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 --bridge` connects directly to bridge server
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/token` | Legacy token file |
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