Add the remchild PoC: client, server, naming, and plan

This commit is contained in:
Fisto
2026-09-22 09:34:43 +02:00
parent 10143c87a4
commit 9a776fefd3
7 changed files with 1228 additions and 0 deletions
+46
View File
@@ -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).