vibelet 0.1.13 → 0.1.15
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/README.md +35 -9
- package/bin/vibelet.mjs +15 -1
- package/dist/index.cjs +25 -25
- package/package.json +2 -18
package/README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# Vibelet
|
|
2
2
|
|
|
3
|
-
`@vibelet/cli` is a
|
|
3
|
+
`@vibelet/cli` is a cross-platform CLI that installs and manages the Vibelet daemon for remote coding sessions. The same package is also published as `vibelet`.
|
|
4
|
+
|
|
5
|
+
Official website: https://vibelet.icu
|
|
4
6
|
|
|
5
7
|
## Requirements
|
|
6
8
|
|
|
7
|
-
- macOS
|
|
9
|
+
- macOS / Linux / Windows
|
|
8
10
|
- Node.js 18 or newer
|
|
9
11
|
|
|
10
12
|
## Install
|
|
@@ -22,15 +24,29 @@ npm install -g vibelet
|
|
|
22
24
|
vibelet
|
|
23
25
|
```
|
|
24
26
|
|
|
27
|
+
The CLI prints the official website on each run so users can always jump back to the main docs and download page.
|
|
28
|
+
|
|
25
29
|
## Commands
|
|
26
30
|
|
|
27
31
|
```bash
|
|
28
|
-
vibelet
|
|
29
|
-
vibelet
|
|
30
|
-
vibelet
|
|
31
|
-
vibelet
|
|
32
|
-
vibelet
|
|
33
|
-
vibelet
|
|
32
|
+
vibelet # Install/start daemon and print pairing QR code
|
|
33
|
+
vibelet start # Same as above
|
|
34
|
+
vibelet stop # Stop the daemon
|
|
35
|
+
vibelet restart # Restart the daemon
|
|
36
|
+
vibelet status # Show service and daemon status
|
|
37
|
+
vibelet logs # Print recent daemon logs
|
|
38
|
+
vibelet reset # Reset pairings and print a fresh QR code
|
|
39
|
+
vibelet --help # Show help
|
|
40
|
+
vibelet --version # Show CLI version
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Options
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
vibelet --relay <url> # Use a tunnel URL for remote access
|
|
47
|
+
vibelet --relay "" # Clear saved relay URL
|
|
48
|
+
vibelet --host <ip> # Set primary host/IP advertised for connections
|
|
49
|
+
vibelet --fallback-hosts <ip1>,<ip2> # Comma-separated fallback IPs
|
|
34
50
|
```
|
|
35
51
|
|
|
36
52
|
## Release
|
|
@@ -47,4 +63,14 @@ The dual publish script builds once, then publishes the same CLI bundle to both
|
|
|
47
63
|
- The npm package publishes the CLI plus a minified daemon runtime bundle.
|
|
48
64
|
- The package is intended for end users of the macOS host daemon, not for importing as a library.
|
|
49
65
|
- The daemon keeps `~/.vibelet/data/audit.jsonl` and `~/.vibelet/logs/daemon.*.log` size-bounded by trimming the oldest content in place.
|
|
50
|
-
-
|
|
66
|
+
- Environment variables:
|
|
67
|
+
| Variable | Default | Description |
|
|
68
|
+
|----------|---------|-------------|
|
|
69
|
+
| `VIBE_PORT` | `9876` | Daemon listen port |
|
|
70
|
+
| `VIBE_IDLE_TIMEOUT_MS` | `1800000` (30 min) | Idle timeout before a driver is released (0 = disabled) |
|
|
71
|
+
| `VIBE_TURN_STALL_TIMEOUT_MS` | `300000` (5 min) | Max inactivity for an in-flight turn (0 = disabled) |
|
|
72
|
+
| `VIBE_AUDIT_MAX_BYTES` | `8388608` (8 MB) | Max audit.jsonl size before trimming |
|
|
73
|
+
| `VIBE_DAEMON_LOG_MAX_BYTES` | `16777216` (16 MB) | Max daemon log file size before trimming |
|
|
74
|
+
| `VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS` | `300000` (5 min) | Log trimming check interval |
|
|
75
|
+
| `CLAUDE_PATH` | auto-detect | Path to Claude binary |
|
|
76
|
+
| `CODEX_PATH` | auto-detect | Path to Codex binary |
|
package/bin/vibelet.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { spawn, spawnSync } from 'node:child_process';
|
|
4
|
-
import { cpSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, openSync } from 'node:fs';
|
|
4
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, openSync, writeSync } from 'node:fs';
|
|
5
5
|
import { homedir } from 'node:os';
|
|
6
6
|
import { dirname, join, resolve } from 'node:path';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
@@ -25,6 +25,19 @@ const stdoutLogPath = join(logDir, 'daemon.stdout.log');
|
|
|
25
25
|
const stderrLogPath = join(logDir, 'daemon.stderr.log');
|
|
26
26
|
const pidFilePath = join(vibeletDir, 'daemon.pid');
|
|
27
27
|
const relayConfigPath = join(vibeletDir, 'relay.json');
|
|
28
|
+
const OFFICIAL_SITE_URL = 'https://vibelet.icu';
|
|
29
|
+
|
|
30
|
+
let officialSitePrinted = false;
|
|
31
|
+
|
|
32
|
+
function printOfficialSite() {
|
|
33
|
+
if (officialSitePrinted) return;
|
|
34
|
+
officialSitePrinted = true;
|
|
35
|
+
try {
|
|
36
|
+
writeSync(1, `\nOfficial site: ${OFFICIAL_SITE_URL}\n`);
|
|
37
|
+
} catch {
|
|
38
|
+
// Best-effort branding footer; ignore broken pipes and closed stdio.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
28
41
|
|
|
29
42
|
// ─── Helpers ────────────────────────────────────────────────────────────────────
|
|
30
43
|
|
|
@@ -700,5 +713,6 @@ async function main() {
|
|
|
700
713
|
|
|
701
714
|
process.on('SIGINT', () => process.exit(0));
|
|
702
715
|
process.on('SIGTERM', () => process.exit(0));
|
|
716
|
+
process.on('exit', printOfficialSite);
|
|
703
717
|
await main();
|
|
704
718
|
process.exit(0);
|