Inspiration
We build a lot of projects, and much of our time is spent prompting agents to design features, implement tests, and debug issues. Unfortunately, current agentic solutions usually require a laptop, or force you to sacrifice control when working from a phone. We feel a phone is actually the right form factor for largely control-driven tasks, so we explored SSH clients and terminal emulators on phones and found very few usable solutions. Termius was one of the better ones, especially when paired with Tailscale to connect devices, but it still felt like a workaround. We felt the workflow could be improved significantly, and that’s what we tackled with Relay.
What it does
Relay combines core functionality from tools like Termius and Tailscale, then adds a new Agent Call feature that lets you interact with agents entirely using voice. We focused on calls because many of the tasks we want to accomplish involve a lot of typing, and a phone is simply not well suited for that. Voice, on the other hand, is one of the phone’s strengths, so we made it a core part of the product.
Relay also includes a clean and intuitive terminal emulator that takes advantage of phone-native interactions like glide typing and touch to create a more immersive terminal experience. It supports multiple tabs and Agent Calls to better fit the massively parallel workflows of developers. Relay also supports multiple VPN options to connect your devices: Tailscale for users already in that ecosystem, and our own simplified VPN setup for users who want an easier one-click path.
How we built it
For the hackathon, we decided to build an MVP for iPhones and Macs since the developer ecosystem there is very strong. We used Swift in Xcode to develop the Relay app for iPhone. We interfaced with the open-source Tailscale API to let users who already use Tailscale seamlessly connect through their tailnets. We also built our own WireGuard-based VPN flow so that new users could connect their devices easily without needing to set up Tailscale first. Devices communicate using SSH to keep traffic encrypted and private. All of the terminal emulator features, including Agent Calls, were implemented in Swift using Apple’s SDKs.
Challenges we ran into
Building our own VPN flow was challenging because we had to understand the WireGuard protocol and figure out how to simplify the UX into something as easy as running a script on the user’s Mac and changing a setting in the iPhone app. Since this was one of our biggest complaints with existing solutions, ease of adoption really mattered. Another challenge was making sure this connectivity path was secure, since weaknesses there would affect the whole app.
Accomplishments that we're proud of
We were most proud that we got the core features implemented in about 5 hours, which meant we were able to use Relay itself to build new features from our phones and fix bugs in the codebase. Being able to use our own product let us tweak a lot of details quickly, and we still have a long list of small features and improvements we want to make. By the end, we were extremely happy with the flow of the application and how easy and intuitive it was to pick up and use effectively.
What we learned
We learned a lot about Apple app development, VPNs, and networking. Defensive programming and prompting agents to be more mindful of security when building the VPN was another useful lesson, since they were often happy to go off the rails and expose obvious attack vectors. We also learned how far we could push agentic coding from a phone, where the limits are, and how to expand them - direct lessons we plan to apply to Relay.
What's next for Relay
The immediate next step is to polish the iPhone app, improve Tailscale setup for first-time users, and continue hardening our VPN implementation if we feel the Tailscale setup is still a little too onerous. After that, we plan to get Relay on the App Store, develop an Android app, and support connections to any laptop, not just Macs.
Log in or sign up for Devpost to join the conversation.