Commit
e14d43f
Done — PR #44: https://github.com/dtinth/agent-env/pull/44 . Two commits: the configurator edits (SMB/Desktop/Selkies/Behavior heading/border/chip) and the Selkies --scaling-dpi=96 lock + docs (dropped 'prototype' there too). vp check + 93 tests green. Preview's still live if you…
GitHubConfigurator: plainer SMB/Desktop detail; pin Selkies UI scaling by dtinth-claw[bot] · Pull Request #44 · dtinth/agent-envFollows the Docker explainer (#43) with the same treatment for the other components, plus a Selkies mobile-scaling fix. Configurator SMB share — a Behavior list, and a Reaching the share section t...
Merged. For every component in the "What runs", let's remove the black box with "Shows up at" and "Needs". Replace with a behavior section.
Done — PR #45: https://github.com/dtinth/agent-env/pull/45 . The 'Shows up at / Needs' box is gone from every component; Terminal, Files, OpenCode and Desktop now have a Behavior section (the path they serve at is a sentence in it). Docker/SMB just lose the box. Live on the…
GitHubConfigurator: drop the facts box for a Behavior section on every component by dtinth-claw[bot] · Pull Request #45 · dtinth/agent-envRemoves the "Shows up at / Needs" box from every component in the "What runs" step and replaces it with a Behavior section, so every component reads the same way Docker and SMB ...
Merged. What do you think about adding a WireGuard component?
Like it. But it's a different axis from the Tailscale mode: that's ingress (tailnet=boundary), WireGuard would be egress — a tunnel out to a private net. Needs NET_ADMIN + /dev/net/tun, so same 'host relaxes sandbox' tier as Docker. Use case — reaching internal services?
Use case is running an agent env on a VPS that is not part of Tailscale network but has a public IP
Ah, so it's ingress after all — a self-hosted tailnet. Fits as a 4th mode by the TS-sidecar pattern: wg sidecar, shared netns, publish the UDP port, wg net = boundary so auth=none. Cost vs Tailscale: no coordinator, you hand-manage keys+peers. Want me to spec it?
Yes but grill me before that?
Grill Q1 (root): is WireGuard a new deployment MODE — mutually exclusive with local/domain/tailnet, i.e. it IS the boundary — or a component layered on another mode? My rec: a 4th mode. Like the tailnet it sets PUBLIC_URL, port layout, and auth=none default. Agree?
Hmm, not sure if we can modularize them like we did components. Like:
+ expose
+ port mappings
+ Caddy ingress
+ Tailscale
+ Wireguard
what do you think
Blocker to free checkboxes: the network namespace. Tailscale & WireGuard each work by the app sharing the sidecar's netns — you can share only one. So the VPNs can't stack with each other, nor with host port-mappings. Only Caddy-vs-raw-expose is a cleanly separable layer, and…
how would that look like?
Two axes, not N checkboxes.
AXIS A — L3 reach (pick ONE; it owns the netns):
- loopback: 127.0.0.1 only, bring your own proxy
- published: host port mappings on 0.0.0.0
- tailscale: sidecar, tailnet = boundary
- wireguard: sidecar, wg net = boundary…
axis A missing 'none'? for Dokploy-based hosting
Good catch — yes. Call it 'internal': no host ports, container exposed only on the compose network; Dokploy's Traefik (or any sibling proxy) joins that net and does ingress+TLS.
It's distinct from loopback: loopback = a proxy on the HOST, internal = a proxy in a CONTAINER on the…
Please draft each option in each axis. Title, options, and what to show inside "behavior" which depends on which option is selected
AXIS A — Title: 'How is it reached?' (pick one)
Internal (behind an orchestrator)
✓ No host ports; exposed only on the compose network
✓ Dokploy/Traefik or a sibling proxy routes in and does TLS
⚠ Proxy is usually public — auth required by default
→ PUBLIC_URL is whatever…
ok now I am pondering if we need a separate Caddy container or not... why not just use an inner Caddy
Right now it's ALREADY two Caddys: an inner gateway Caddy (runs as 'gateway', does forward_auth + routing on 8080) and, in domain mode, a sidecar caddy:2-alpine that only TLS-terminates and reverse_proxies to agent-env:8080.
I'd collapse to inner-only. The inner Caddy already…
After the collapse, domain mode is just the agent-env container — no sidecar:…