Update: v0.1.0 Released
Since my last post, everything changed.
The WebView terminal is gone. Termux is no longer required.
Claude Code and Codex now run natively on Android —
in the same process as your shell, with zero TCP, zero IPC.
This is what shipped.
The Problem I Kept Running Into
Claude Code broke in Termux. Codex broke in Termux.
Every update was a gamble.
So I directed the AI to throw away the entire architecture
and rebuild it from scratch.
What Changed
Before (Plan A):
- WebView terminal via ttyd
- Termux required
- TCP socket between terminal and app
- Died every time I switched apps
After (Plan B):
- Native PTY via JNI forkpty — same process, zero IPC, zero TCP
- Termux not required
- bash, Node.js, Python 3, git, curl, ripgrep, jq, tmux, vim, sqlite3 bundled inside the APK as .so files
- Executed via /system/bin/linker64 to bypass SELinux's execve restrictions on app_data_file context
As far as I know, this is the only React Native app in the
world with an embedded native terminal emulator running
in-process via JNI.
Claude Code + Codex on Android
Both now run natively through Shelly's managed runtime:
- Claude Code 2.1.121 (Opus 4.7, 1M context) ✅
- Codex v0.124.0-termux (GPT-5.5) ✅
- Gemini CLI 0.39.1 ✅
The runtime hot-swaps updates without an APK rebuild.
Broken versions are logged and cooled down automatically.
If Claude Code or Codex broke in your Termux setup —
this is the maintained path.
4 live panes simultaneously:
- Top left: Claude Code terminal
- Top right: Codex (GPT-5.5)
- Bottom left: Cerebras AI pane with READING TERMINAL
- Bottom right: Browser pane with YouTube
What Works Today
- Native terminal with inline command blocks
- Multi-pane layout (up to 4 live panes)
- Cross-pane intelligence — AI reads terminal output automatically
- Multi-agent routing: Claude, Gemini, Cerebras, Groq, Perplexity, Codex, Local LLM via llama.cpp
- File editing with per-hunk InlineDiff accept/reject
- @team multi-model consensus
- SSH profiles
- CRT mode (scanlines + phosphor green + vignette)
Known Limitations
- Claude Code first-run OAuth requires credential transplant
- Ports monitor blocked by Android 10+ SELinux (bug #99)
- Test coverage is thin
Try It
GitHub: https://github.com/RYOITABASHI/Shelly
APK: GitHub Releases
License: GPLv3
Rough edges exist. That's why it's open source.


Top comments (0)