DEV Community

Cover image for I Can't Write Code. But I Shipped a Native Android Terminal IDE with Claude Code + Codex Running Natively — No Termux Required.
RYO ITABASHI
RYO ITABASHI

Posted on

I Can't Write Code. But I Shipped a Native Android Terminal IDE with Claude Code + Codex Running Natively — No Termux Required.

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)