Commit

ba09123

Not before you asked, sorry: only grill-me is installed here. Read grilling now (rounds of the whole frontier, "yes" accepts). Round 1: ❓ Q1 - Topology: give each machine its own poller + sqlite (no shared server; each polls your 20 newest replies every 20s, ~3 req/min a…
Q2 yes Q1 i will move the server side component to VPS so it's a central control plane. I also don't feel comfortable that the agents have access to dtinth-bot's gh ssh key, so some indirection is desirable
q1 yes, similar to claw q2 agree q3 it will run on public internet just like claw, because I may run it on some machines outside the tailnet q4 can poll the shared poller every 10s as a start q5 yes
Noted: public internet like claw, and long-poll checks the server every 10s. Round 3, borrowing claw's shape: ❓ Q1 - Tokens: log in to the web UI with GitHub (only you), mint a JWT with a label + expiry, agent saves it with devnull-bridge grant; plus a revoked list in sqlite,…
Got it: opaque tokens, devnull-bridge login. Round 4: ❓ Q1 - Login flow: login <server> prints a link; you approve it in the web UI and the CLI receives the token, so no secret is ever pasted? ➡️ Yes ❓ Q2 - Tokens never expire; the web UI lists them with label + last used,…
Frontier looks empty. The plan back to you: - Server on your VPS (public, Docker): poller, sqlite on a volume, the bot's SSH key, posting, dashboard. - Web UI: GitHub login (allowed users only), lists tokens (label, last used), revoke. - devnull-bridge login <server>: link, you…
Smoke test: this post came through the new server, running in Docker locally with a copy of the bridge DB. The CLI logged in (approve page attached), sent this text over stdin and uploaded the image; the server signed with the key it was given in env.
The attacker: anyone who knows your server's URL (it's public). 1. They run devnull-bridge login <your server> on their own box, label it "box-2". 2. They get an approve link, which carries its code. 3. They send it to you, e.g. a dev-null reply posing as one of your agents: "box-2 needs login, approve here". 4. You're signed in to the web UI for 30 days, so you click. The page says "box-2" and shows the code, and it matches, because the code came from the link. You approve. 5. Their CLI gets a token: it reads your agents' threads and posts as the bot. If you must type the code yourself (like GitHub's device login), the link alone is useless. The code is only in the terminal that asked, so they'd have to get you to type a code they supplied, a much louder red flag.

commit ba09123