openmeet-terminal 0.2.0 → 0.3.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/README.md +42 -12
- package/dist/index.js +759 -102
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -27,41 +27,46 @@ No browser needed. Just your terminal, a mic, and speakers.
|
|
|
27
27
|
│──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
|
|
28
28
|
│ > Type message... │
|
|
29
29
|
│──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
|
|
30
|
-
│ [Esc] Leave [Tab] Chat [m] mute [
|
|
30
|
+
│ [Esc] Leave [Tab] Chat [m] mute [s] share [w] watch [e] screen [↑↓] Select [[-]/[+]] Vol │
|
|
31
31
|
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Features
|
|
35
35
|
|
|
36
|
-
- **Real-time audio chat** — full-duplex audio via WebRTC with
|
|
36
|
+
- **Real-time audio chat** — full-duplex stereo audio via WebRTC with 256kbps Opus encoding
|
|
37
|
+
- **Video support** — send and receive webcam video (1080p) via ffmpeg/ffplay
|
|
38
|
+
- **Screen sharing** — share your screen at 1080p@30fps, view remote screen shares
|
|
37
39
|
- **Text messaging** — send and receive chat messages alongside audio
|
|
38
|
-
- **Device selection** — pick your mic
|
|
40
|
+
- **Device selection** — pick your mic, speakers, camera, and screen capture device
|
|
39
41
|
- **Per-participant volume** — adjust volume for each remote peer independently
|
|
40
42
|
- **Speaking indicators** — see who's talking with live VU meters
|
|
41
43
|
- **Connection stats** — real-time bitrate, RTT, packet loss, and estimated per-peer latency display
|
|
44
|
+
- **Connection recovery** — automatic retry with exponential backoff on connection failure
|
|
42
45
|
- **Room management** — create new rooms or join existing ones by room code
|
|
43
46
|
- **Emoji identities** — auto-assigned persistent emoji username (e.g., 🐶, 🦊, 🐸)
|
|
47
|
+
- **Debug logging** — optional file-based debug log at `~/.config/openmeet/debug.log`
|
|
44
48
|
- **Cross-platform** — works on macOS and Linux
|
|
45
49
|
|
|
46
50
|
## Prerequisites
|
|
47
51
|
|
|
48
52
|
- **Node.js 22+** — [download](https://nodejs.org)
|
|
49
53
|
- **sox** — audio capture and playback engine
|
|
54
|
+
- **ffmpeg** _(optional)_ — required for video and screen sharing
|
|
50
55
|
|
|
51
|
-
Install
|
|
56
|
+
Install dependencies:
|
|
52
57
|
|
|
53
58
|
```bash
|
|
54
59
|
# macOS
|
|
55
|
-
brew install sox
|
|
60
|
+
brew install sox ffmpeg
|
|
56
61
|
|
|
57
62
|
# Ubuntu / Debian
|
|
58
|
-
sudo apt install sox
|
|
63
|
+
sudo apt install sox ffmpeg
|
|
59
64
|
|
|
60
65
|
# Fedora
|
|
61
|
-
sudo dnf install sox
|
|
66
|
+
sudo dnf install sox ffmpeg
|
|
62
67
|
|
|
63
68
|
# Arch
|
|
64
|
-
sudo pacman -S sox
|
|
69
|
+
sudo pacman -S sox ffmpeg
|
|
65
70
|
```
|
|
66
71
|
|
|
67
72
|
## Install
|
|
@@ -100,6 +105,12 @@ openmeet --input-device "MacBook Pro Microphone" --output-device "MacBook Pro Sp
|
|
|
100
105
|
| `--room <id>` | Room ID to join directly | _(interactive)_ |
|
|
101
106
|
| `--input-device <name>` | Audio input device name | _(device picker)_ |
|
|
102
107
|
| `--output-device <name>` | Audio output device name | _(device picker)_ |
|
|
108
|
+
| `--no-video` | Disable video (audio-only mode) | |
|
|
109
|
+
| `--video-device <id>` | Video capture device (e.g., `"0"`) | |
|
|
110
|
+
| `--no-overlay` | Disable video overlay | |
|
|
111
|
+
| `--test-camera` | Test camera capture (opens ffplay preview) | |
|
|
112
|
+
| `--test-screen` | Test screen capture (lists screens, opens ffplay preview) | |
|
|
113
|
+
| `--debug` | Enable debug logging (writes to `~/.config/openmeet/debug.log`) | |
|
|
103
114
|
| `-h, --help` | Show help | |
|
|
104
115
|
|
|
105
116
|
### Keyboard shortcuts
|
|
@@ -110,6 +121,11 @@ Once inside a room:
|
|
|
110
121
|
|-----|--------|
|
|
111
122
|
| `Tab` | Toggle focus between participant list and chat input |
|
|
112
123
|
| `m` | Toggle mute (when participant list is focused) |
|
|
124
|
+
| `v` | Toggle camera on/off (requires `--video-device` or video enabled) |
|
|
125
|
+
| `s` | Toggle screen sharing (shows screen picker on first use) |
|
|
126
|
+
| `w` | Open/close selected peer's webcam (only when peer has camera on) |
|
|
127
|
+
| `e` | Open/close selected peer's screen share (only when peer is sharing) |
|
|
128
|
+
| `o` | Toggle video overlay (name, resolution info on video windows) |
|
|
113
129
|
| `d` | Open device picker |
|
|
114
130
|
| `Up` / `Down` | Select participant |
|
|
115
131
|
| `[` / `]` or `-` / `+` | Adjust selected peer's volume |
|
|
@@ -120,17 +136,21 @@ Once inside a room:
|
|
|
120
136
|
|
|
121
137
|
```
|
|
122
138
|
Terminal ──sox rec──▶ WebRTC Audio ──▶ Remote Peers
|
|
139
|
+
Terminal ──ffmpeg──▶ WebRTC Video ──▶ Remote Peers (webcam + screen)
|
|
123
140
|
│
|
|
124
141
|
Remote Peers ──▶ WebRTC Audio ──sox play──▶ Terminal
|
|
142
|
+
Remote Peers ──▶ WebRTC Video ──ffplay────▶ Terminal (separate windows)
|
|
125
143
|
│
|
|
126
144
|
Terminal ◀────────── WebSocket ──────────▶ Server
|
|
127
145
|
(signaling + chat)
|
|
128
146
|
```
|
|
129
147
|
|
|
130
|
-
1. **Audio capture**: `sox rec` records from your mic at 48kHz/16-bit
|
|
131
|
-
2. **Audio playback**: incoming WebRTC audio is piped to `sox play` for each remote peer, with per-peer volume control
|
|
132
|
-
3. **
|
|
133
|
-
4. **
|
|
148
|
+
1. **Audio capture**: `sox rec` records from your mic at 48kHz/16-bit stereo and feeds 10ms PCM frames into a WebRTC audio track (256kbps Opus)
|
|
149
|
+
2. **Audio playback**: incoming WebRTC audio is piped to `sox play` via FIFOs for each remote peer, with per-peer volume control
|
|
150
|
+
3. **Video capture**: `ffmpeg` captures webcam (1080p) or screen (1080p@30fps) and feeds raw I420 frames into WebRTC video tracks
|
|
151
|
+
4. **Video display**: `ffplay` opens separate windows for remote webcam and screen share streams, with aspect-ratio-preserving letterboxing
|
|
152
|
+
5. **Signaling**: WebSocket connection to the OpenMeet server handles SDP/ICE exchange, chat messages, and room state
|
|
153
|
+
6. **WebRTC**: peer-to-peer connections using `@roamhq/wrtc` (native WebRTC bindings for Node.js) with 3 transceivers per connection (audio, webcam, screen)
|
|
134
154
|
|
|
135
155
|
## Self-hosted server
|
|
136
156
|
|
|
@@ -160,6 +180,16 @@ Your terminal app needs microphone permission:
|
|
|
160
180
|
2. Enable the toggle for your terminal app (Terminal, iTerm2, Warp, etc.)
|
|
161
181
|
3. Restart the terminal and try again
|
|
162
182
|
|
|
183
|
+
### Screen sharing doesn't work (macOS)
|
|
184
|
+
|
|
185
|
+
Screen capture requires Screen Recording permission and a compatible ffmpeg build:
|
|
186
|
+
|
|
187
|
+
1. Open **System Settings > Privacy & Security > Screen Recording**
|
|
188
|
+
2. Enable the toggle for your terminal app
|
|
189
|
+
3. Restart the terminal
|
|
190
|
+
|
|
191
|
+
On macOS 15 (Sequoia), ffmpeg must be built with ScreenCaptureKit support. If screen capture hangs, try `brew reinstall ffmpeg`. Test with `openmeet --test-screen`.
|
|
192
|
+
|
|
163
193
|
### No audio from remote peers
|
|
164
194
|
|
|
165
195
|
Make sure your output device is set correctly. Press `d` inside a room to open the device picker, select your output device, and test it with the built-in test tone.
|