Android AI Terminal
Android AI Terminal
You’re on the road with your laptop closed and your AI server humming at home. You need to check a model’s output, tweak a prompt, or start a long-running agent. Your phone is in your pocket, but SSHing from a tiny keyboard is painful. What if your Android device could be a full terminal for your Sovereign AI Grid?
Quick Take
- One tap launches a persistent tmux session on your AI server
- SSH runs over Tailscale, so no port forwarding or cloud middlemen
- All your tools, tmux, Aider, even a browser, are accessible from anywhere
- No root, no extra hardware, just Termux and your existing setup
SSH from Android with Termux
First, generate an SSH key on your phone. Termux gives you a real Linux environment, so you can run standard commands. Use Termux v0.118.0 (latest stable as of June 2024) for best compatibility.
pkg update && pkg upgrade -y
pkg install openssh -y
ssh-keygen -t ed25519 -C "termux-handy" -f ~/.ssh/id_ed25519 -N ""
Termux prints the public key to stdout after generation. Copy it directly to your AI server:
cat ~/.ssh/id_ed25519.pub
On your server (tested on Ubuntu 22.04 LTS), append that key to ~/.ssh/authorized_keys and lock down permissions:
mkdir -p ~/.ssh
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM..." >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Now connect from your phone. Tailscale v1.56.0 (as of June 2024) gives you a direct, private IP, so no need to remember your home IP or open ports:
ssh -p 2222 user@100.x.y.z
You’ll get a full shell. No cloud, no VPN apps, just Tailscale’s mesh network doing its job.
Gotcha: Termux’s SSH client doesn’t support all options. If you need port forwarding or X11, fall back to an app like ConnectBot v1.9.8, but expect more friction. ConnectBot sometimes fails to handle SSH config files correctly, so you may need to specify
-i ~/.ssh/id_ed25519manually.
One-Tap tmux Session with Termux:Widget
Typing ssh every time is still slow. Let’s make a widget.
Create a script in Termux:
mkdir -p ~/.shortcuts
cat > ~/.shortcuts/SovereignAI.sh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
ssh -p 2222 user@100.x.y.z -t "tmux attach -t handy || tmux new -s handy"
EOF
chmod +x ~/.shortcuts/SovereignAI.sh
Long-press your home screen, add a Termux:Widget v1.10.0 shortcut, and point it at SovereignAI.sh. One tap, and you’re back in your tmux session, exactly where you left off.
Gotcha: Termux:Widget only runs scripts from
~/.shortcuts. If you move the file, the widget breaks. Keep it there. Also, Termux:Widget may not trigger if Termux is killed by Android’s battery optimization—whitelist Termux in battery settings to prevent this.
Keep Sessions Alive with tmux
tmux is the reason this works. When your phone sleeps or your connection drops, your session stays alive.
tmux new -s handy # start a new session
tmux attach -t handy # reattach later
Inside the session, run your AI tools, Aider, Ollama, whatever. When you detach with Ctrl-b d, the process keeps running. Reattach from your laptop, phone, or tablet, and it’s identical.
Gotcha: If your phone kills Termux in the background, the SSH session dies. Use Android’s battery optimization to whitelist Termux, or keep the app open. Some Android skins (e.g., Samsung One UI) aggressively suspend background apps—check your device’s power settings.
Prevent SSH Timeouts
By default, SSH drops idle sessions after 10 minutes. That’s fine for a quick command, but not for long-running agents.
On your server, create /etc/ssh/sshd_config.d/timeout.conf:
mkdir -p /etc/ssh/sshd_config.d
echo "ClientAliveInterval 900" > /etc/ssh/sshd_config.d/timeout.conf
echo "ClientAliveCountMax 2" >> /etc/ssh/sshd_config.d/timeout.conf
systemctl restart sshd
Now your session stays up for 30 minutes of silence before disconnecting. Adjust ClientAliveInterval to match your needs.
Gotcha: Some ISPs reset connections after 20 minutes. If you still see drops, lower
ClientAliveIntervalto 600 andClientAliveCountMaxto 1. Also, if you’re using Tailscale v1.56.0 or later, checktailscale statusto confirm your connection isn’t being reset by the mesh network.
Custom Login Messages for Your AI Stack
Every time you SSH in, you get a status board. Add this to ~/.bashrc on your server:
cat >> ~/.bashrc << 'EOF'
echo "--- Sovereign AI Grid Status ---"
echo "GPU: NVIDIA RTX 4090 (Driver 535.129.03)"
echo "Models: Mistral Small 4 (Local)"
echo "Services:"
echo " - Dashboard: https://play.google.com/store/apps/details?id=com.intsig.chaterm.global"
echo " - Gitea: https://www.appbrain.com/app/chaterm-ai-ssh-terminal/com.intsig.chaterm.global"
echo " - Open WebUI: https://play.google.com/store/apps/details?id=com.intsig.chaterm.global"
echo "-------------------------------"
EOF
Now you see GPU load, active models, and service URLs before you type a command. No more guessing which port your dashboard is on.
Gotcha: If you change service ports, update this block. A stale message is worse than no message. Also, if your server’s hostname changes, the message may break—use
hostname -fin the script to dynamically fetch the server name.
Launch Aider from Your Phone
Aider needs a project directory. On your server, create a launch script:
mkdir -p ~/bin
cat > ~/bin/aider-launch.sh << 'EOF'
#!/bin/bash
cd ~/code/my-project
aider --model local/mistral-small-4 --yes
EOF
chmod +x ~/bin/aider-launch.sh
From your tmux session, run:
bash ~/bin/aider-launch.sh
Aider starts with your local model, and you’re editing files from your phone. No cloud sync, no latency, just your Sovereign AI Grid doing its job.
Gotcha: Aider’s TUI isn’t optimized for touchscreens. Use a Bluetooth keyboard if you plan to code for hours. Also, if Aider crashes, check
journalctl -u aider.service(if running as a systemd service) for errors likeOMP: Error #15: Initializing libomp.dylib failed.
Access Dashboards Over Tailscale
Your AI stack runs on your server, but you can open its web interfaces from your phone.
All traffic stays on Tailscale. No port forwarding, no DNS tricks, just open the URL in your phone’s browser.
Gotcha: Some browsers block mixed content. If a dashboard fails to load, check for HTTPS resources on HTTP pages. Also, if Tailscale’s DERP relay is used (common on mobile networks), expect higher latency—prioritize direct peer-to-peer connections in Tailscale’s admin console.
What I Actually Use
- Termux v0.118.0: Gives me a real Linux shell on Android without root
- Tailscale v1.56.0: Replaces VPNs with a mesh network that just works
- tmux 3.3a: Keeps my AI sessions alive across devices and connection drops
Android AI Terminal
Seamless mobile terminal access to Sovereign AI Grid