CiCa is an Android client for connecting to remote Linux servers over SSH and managing Claude chat sessions from a mobile UI.
- Stores server profiles locally with password or private key authentication
- Encrypts saved credentials with Android Keystore and
EncryptedSharedPreferences - Tests SSH connectivity before saving a server profile
- Opens remote Claude sessions over SSH and runs prompts through
claude -p - Uses
tmux run-shellto keep remote Claude work alive after the initial SSH exec call returns - Persists servers, sessions, and messages with Room
- Renders the app with Jetpack Compose and Navigation Compose
app/src/main/java/com/lazy/cica/ui: Compose screens, navigation, and reusable UI componentsapp/src/main/java/com/lazy/cica/data: local database, repositories, SSH client, tmux integration, and runtime stateapp/src/main/java/com/lazy/cica/security: encrypted credential storageapp/src/test: repository and Room DAO tests
- Android Studio with Android SDK 34
- JDK 17
- A reachable SSH server
- A remote environment with:
tmuxclaudeCLI available inPATH
./gradlew assembleDebugTo install on a connected device or emulator:
./gradlew installDebugTo run local unit tests:
./gradlew testDebugUnitTest- Add a server profile in the app with host, port, username, and either a password or PEM private key.
- Use the built-in connection test to verify SSH access.
- Save the server and create a chat session.
- CiCa invokes
claude -p --session-id --output-format stream-jsonon the remote machine. - Remote output is appended to a session log and tailed back into the Android UI.
- This repository currently contains a single Android app module:
:app - Network access requires the Android
INTERNETpermission, which is already declared in the manifest - Host key checking is currently disabled in the JSch client implementation, so this codebase is still best treated as an early-stage project