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

Published: (April 28, 2026 at 10:07 AM EDT)
2 min read
Source: Dev.to

Source: Dev.to

Overview

Since my last post, everything changed. The WebView terminal is gone and Termux is no longer required. Below is what shipped.

Architecture

Plan A (previous)

  • WebView terminal via ttyd
  • Required Termux
  • TCP socket between terminal and app
  • Crashed every time I switched apps

Plan B (current)

  • Native PTY via JNI forkpty – same process, zero IPC, zero TCP
  • No Termux needed
  • Bundled tools inside the APK as .so files: bash, Node.js, Python 3, git, curl, ripgrep, jq, tmux, vim, sqlite3
  • Executed via /system/bin/linker64 to bypass SELinux execve restrictions on the app_data_file context
  • As far as I know, this is the only React Native app that does this

Runtime

Both AI models run natively through Shelly’s managed runtime:

  • Claude Code 2.1.121 (Opus 4.7, 1 M context) ✅
  • Codex v0.124.0‑termux (GPT‑5.5) ✅
  • Gemini CLI 0.39.1 ✅

The runtime hot‑swaps updates without needing an APK rebuild.

Features

  • Four 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
  • 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)

Setup & Limitations

  • Claude Code first‑run OAuth requires credential transplant
  • Ports monitor blocked by Android 10+ SELinux (bug #99)
  • Test coverage is thin

Repository & Releases

  • GitHub:
  • APK: GitHub Releases page (linked from the repository)

License

GPLv3

Rough edges exist—that’s why the project is open source.

0 views
Back to Blog

Related posts

Read more »