Skip to content
/ app Public

Native mobile app for controlling Claude Code — Flutter + Swift + Kotlin

Notifications You must be signed in to change notification settings

Termopus/app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Termopus

Termopus App

Native mobile interface for controlling Claude Code

Flutter Swift Kotlin Platform


Overview

The Termopus mobile app is a purpose-built native interface for Claude Code. It renders every action Claude takes in real time — code diffs, file edits, terminal output, and error logs — in a scrollable conversation thread with full syntax highlighting.

All cryptography runs in native Swift (iOS) and Kotlin (Android). The Dart UI layer never touches encryption keys.

Features

Real-Time Chat Interface

  • WhatsApp-style conversation thread showing Claude's output as it happens
  • Syntax-highlighted code blocks, inline diffs, collapsible tool-use cards
  • Interactive action buttons: Allow, Deny, Edit, Always Allow
  • Active agent indicators and task progress tracking

One-Tap Approvals

  • Every approval gated behind biometric authentication (Face ID / Fingerprint)
  • Smart "Always Allow" — learns patterns and auto-writes permission rules
  • AskUserQuestion intercepted and rendered as interactive cards on phone

Code Diff Previews

  • Line-by-line file change inspection before execution
  • Color-coded additions, deletions, and modifications
  • Collapsible diff viewer with full syntax highlighting

Multi-Computer Sessions

  • Pair with work laptop, home desktop, and cloud VMs simultaneously
  • Each session independently encrypted with hardware-backed keys
  • Project-grouped session picker — tap to switch, swipe to delete

Push Notifications

  • Silent FCM push when Claude waits for input
  • Notification includes request context for quick triage
  • Auto-wake and reconnect on tap

Responsive UI System

  • 5 breakpoints covering phones through tablets
  • Adaptive typography, spacing, and icon sizing
  • Terminal mode toggle — chat bubbles or terminal-style feed

Architecture

┌─────────────────────────────────────────────────┐
│                  Flutter (Dart)                  │
│  ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ Chat UI  │ │ Sessions │ │    Settings       │ │
│  │ Diffs    │ │ Pairing  │ │ Model + Perms     │ │
│  │ Actions  │ │ Resume   │ │ Rules + Controls  │ │
│  └────┬─────┘ └────┬─────┘ └────────┬─────────┘ │
│       └─────────────┼────────────────┘           │
│              MethodChannel                       │
├─────────────────────┼───────────────────────────┤
│          Native Security Layer                   │
│  ┌──────────────────┼──────────────────────────┐ │
│  │ Swift (iOS)      │      Kotlin (Android)    │ │
│  │ Secure Enclave   │      StrongBox           │ │
│  │ AES-256-GCM      │      AES-256-GCM         │ │
│  │ ECDH + X25519    │      ECDH + X25519       │ │
│  │ App Attest       │      Play Integrity      │ │
│  │ Face ID          │      BiometricPrompt     │ │
│  └──────────────────┴──────────────────────────┘ │
└─────────────────────────────────────────────────┘

State Management

Provider Purpose
ChatProvider Message stream, tool cards, diffs
ConnectionProvider Relay status, reconnect logic
SessionProvider Session list, resume, multi-computer
AuthProvider Biometric state, lock screen
ClaudeConfigProvider Model + permission mode sync
ExtensionsProvider Plugins, skills, rules from filesystem

Tech Stack

Layer Technology
UI Framework Flutter 3.x (Dart)
iOS Native Swift · Secure Enclave · URLSession WebSocket
Android Native Kotlin · StrongBox · OkHttp WebSocket
State Riverpod StateNotifierProvider
Models Freezed + json_serializable
Routing GoRouter with named routes
Theme Single dark theme, responsive breakpoints

About

Native mobile app for controlling Claude Code — Flutter + Swift + Kotlin

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages