Deployed app (note that it can be inconsistent with DigitalOcean Droplet)

Inspiration

I was planning to create another project but had to run out and I was thinking "it would be great if I could work on this on my phone". Then I thought "why don't I just make Claude Code for mobile instead?", and that evolved into this project.

What it does

Use your terminal coding agents from any browser or phone. SSH into your server and get a full interactive terminal -- no local dev environment required. This project additionally offers custom hooks for Claude Code, Codex CLI, Gemini CLI, Opencode that feed back into the app and notify you when coding agents finish their tasks.

Core features:

  • Coding agent hooks with local notifications on task completion
  • Seamless session continuity with tmux
  • SSH connection profile persistence on localStorage
  • Mobile-friendly UX
  • Voice input
  • Tailscale integration for SSH security

Please refer to the README for a full overview and feel free to try out the deployed app! Note that some setup is required on the your end to enable OpenSSH server on your device, but I tried to give an intuitive walkthrough in the README.

How I built it

As I mentioned earlier, I initially wanted to build Claude Code for mobile. I quickly instructed Claude Code and Antigravity to build out the initial SSH infrastructure and with xterm and tmux, but after a day I was struggling to think about new features to introduce. Having implemented low-hanging fruit like saving host profiles, a mobile app wrapper, and voice to text integration, I thought about expanding the scope to be a mobile terminal instead of just Claude Code. I was worried about the project's scope becoming too broad from this, so I decided to add the coding agent hooks feature to give it some focus.

Challenges I ran into

Doing a solo project is fun but it's quite harrowing at the same time. I have nobody to consult and I have to rely on myself (and Claude and Gemini) to decide which features to add and how to iteratively refine them. Before Friday I had no clue how these communication protocols (SSH, SOCKS5, Tailscale, etc.) worked, but through the power of prompting and my software engineering experience, I was able to piece together these new technologies into a meaningful project. Debugging was a huge pain because there were so many points of failure (was it the OpenSSH server, WSL, Tailscale, DigitalOcean, or Expo Go?), but along the way I learned what the shape of this app was supposed to look like.

Accomplishments that I'm proud of

I think this is the first hackathon app that I will keep using after the event ends. I'm excited to hammer out the mobile features and get this thing on my phone, because I really think that it is so cool. I'm really proud of coming up with a good idea, piecing together so many technologies on the fly, and troubleshooting my way to a functional product.

What's next for mobile-terminal

I want to keep working on this project until I have a tool that I'm satisfied using. This hackathon was quite time-constrained, so I mostly focused on the easy things, which ended up being on the web side of things. I have a windows laptop & PC and an iphone so developing for mobile is not so fun, but I'm definitely going to try and clean up the mobile module and add some useful. Think push notifications for coding agent action completions, an intuitive diff viewer, and other features that will revolutionize mobile vibe coding.

Built With

Share this project:

Updates