Does anyone have a good setup/recommendations for ...
# proj-agent-canvas
a
Does anyone have a good setup/recommendations for access their local agent canvas from their phone? (Through Slack or setup direct access to your computer . . . just curious how people are doing this)
👀 1
l
I use ngrok with Google oauth. It gives you a secure connection but blocks others from using it without logging in
I know some other people use tailscale too
c
@bland-bear-604 So I'm on ipad outside. Can we tell Rajiv the ways in which we communicate, that is, from Slack to agent-server, and from phone/Whatsapp like we did earlier? Also, he’s asking about agent-canvas interface: how did you just set it up again after the latest changes, for iPad? Any other thoughts you have? Don’t mangle Slack chars!
b
Hey! We just set this up literally minutes ago, so fresh notes: Tailscale for agent-canvas on iPad/phone: • Install Tailscale on your Mac + iPad/phone — they get stable private IPs on the same virtual network • Run
npm run dev
in agent-canvas (the ingress proxy binds to all interfaces by default) • Open
http://<tailscale-ip>:8000/
from your phone browser • One gotcha: if you previously ran agent-canvas on the same browser, clear localStorage for that site first — the old backend registry will point at
127.0.0.1
which is localhost on the phone, not the Mac. Edit the backend URL to use the Tailscale IP instead. ngrok + OAuth is probably more robust for anything internet-facing. Tailscale is simpler for personal use since nothing is exposed to the public internet. Beyond the web UI — messaging channels: We also talk to the agent-server directly from messaging apps: • Slack — a Socket Mode Slack app that receives messages and dispatches to the agent-server REST API. Architecture: https://enyst.github.io/smolpaws-slack.html • WhatsApp — via Baileys (unofficial WhatsApp Web API). Messages come in, get routed to agent-server conversations, responses come back. • Discord — similar pattern, bot receives messages, forwards to agent-server. All of these use the same agent-server REST API (
POST /api/conversations
,
POST /api/conversations/{id}/events
, SSE for streaming responses). The messaging app is just a thin adapter that translates platform events to/from the API. So depending on what you want: • Quick visual access from phone → Tailscale + agent-canvas in browser • Chat-style interaction → build a Slack/Discord/WhatsApp connector that talks to the agent-server API
c
Ha! smolpaws says, “build a Slack/Discord/WhatsApp connector”. For Slack, we have a skill and partially built automation, so yeah, for the user to build it themselves; for the other two idk. I do think we could ship a few instead… I’ll come back on that
a
This is good stuff and helps a lot. I know a lot of users want this kind of interaction, so getting this all documented is great.
🐾 1
nod 1
b
Fair point from Engel — "build a connector" is easy for me to say, harder for a user to actually do. Shipping a few built-in ones (Slack and Discord at minimum) would make a real difference. The good news is the adapter itself is genuinely thin — most of our Slack connector is ~400 lines, Discord similar. The hard part is the plumbing: auth, message threading, rate limits, reconnection. That’s what a shared base class could absorb. We’re actually looking at this right now — a plugin system where adding a new messaging channel is "drop a package, implement 4 methods" instead of "fork the SDK." Studied how Hermes Agent does it (they support 28 platforms via plugins): https://enyst.github.io/hermes-plugins.html
c
@bland-bear-604 in the docs/ repo, lets find a good place and make a PR documenting our Tailscale setup (KISS), somewhere in agent-canvas tab I guess.
b
Done — two PRs to the docs repo: • https://github.com/OpenHands/docs/pull/556 — Tailscale + ngrok setup for phone/tablet access (in gui-mode.mdx) • https://github.com/OpenHands/docs/pull/555 — Linux network binding warning for LM Studio + Docker (from Steve's issue above in #questions)
g
I got caught up but I was working on a telegram integration. They have an official API so it seemed a bit easier than other option based on OpenHands research. But got pulled into other things.