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 CHANGED
@@ -1,10 +1,12 @@
1
1
  # Vibelet
2
2
 
3
- `@vibelet/cli` is a macOS CLI that installs and manages the Vibelet daemon for remote coding sessions. The same package is also published as `vibelet`.
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 status
30
- vibelet logs
31
- vibelet reset
32
- vibelet --help
33
- vibelet --version
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
- - Optional env vars: `VIBE_AUDIT_MAX_BYTES`, `VIBE_DAEMON_LOG_MAX_BYTES`, `VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS`.
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);