Add the remchild PoC: client, server, naming, and plan
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# remchild
|
||||
|
||||
A remote child: a separate module that runs on another machine. Veskslop feeds it work, and it
|
||||
returns results. Planned for STT, TTS, and later video and the desktop control app. See
|
||||
[plan.md](plan.md) for the protocol, the heartbeat schedule, the naming rule, and the phases.
|
||||
|
||||
## Layout
|
||||
|
||||
| Path | What |
|
||||
| --- | --- |
|
||||
| `client/main.c` | The PoC client: C11, libc only, no runtime dependencies. |
|
||||
| `client/words.h` | Generated from `words.json`; the client embeds the lists. |
|
||||
| `words.json` | The two 128-word lists. The server and the generator read this file. |
|
||||
| `server/server.mjs` | The PoC listener: allowlist, heartbeat states, ping test, history. |
|
||||
| `plan.md` | The design and the phase list. |
|
||||
|
||||
## Build and run
|
||||
|
||||
```sh
|
||||
cc -O2 -o remchild/client/remchild remchild/client/main.c
|
||||
|
||||
# On the machine that runs Veskslop:
|
||||
node remchild/server/server.mjs --port 8799 --ips 192.168.1.5
|
||||
|
||||
# On the remote machine:
|
||||
./remchild/client/remchild --server 192.168.1.5:8799
|
||||
```
|
||||
|
||||
The client asks for the address when `--server` is absent. It prints the assigned name, then
|
||||
accepts `p` (ping test) and `q` (quit).
|
||||
|
||||
Non-LAN addresses in the allowlist need the launch argument:
|
||||
|
||||
```sh
|
||||
node remchild/server/server.mjs --port 8799 --ips 203.0.113.7 --allow-non-lan
|
||||
```
|
||||
|
||||
## Test
|
||||
|
||||
```sh
|
||||
node remchild/server/server.mjs --port 8799 --ips 127.0.0.1 &
|
||||
./remchild/client/remchild --server 127.0.0.1:8799 --once
|
||||
```
|
||||
|
||||
`--once` sends one hello and one ping, prints the welcome and the round trip, and exits. History
|
||||
lands in `server/clients.jsonl` (gitignored).
|
||||
Reference in New Issue
Block a user