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 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
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
With no --server, the client probes for a server for five seconds: one answer connects
automatically, several show a pick list, none asks for host:port. --server skips discovery. It
prints the assigned name, then accepts p (ping test) and q (quit).
If the server misses a heartbeat during the fast phases (the first few minutes), it sends a
notice; the client prints a warning that the connection may be unstable. Nothing else changes.
Discovery uses UDP 8798 (--discovery-port); --beacon-ms 0 keeps probe replies but stops the
beacon. Non-LAN addresses in the allowlist need the launch argument:
node remchild/server/server.mjs --port 8799 --ips 203.0.113.7 --allow-non-lan
Test
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).