No description
  • Kotlin 93.9%
  • Python 5%
  • Shell 0.7%
  • C 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Adam Outler afc40cdf65
All checks were successful
CI / ci-pipeline (push) Successful in 8m21s
docs(qa): add screenshot of Google Play release 903 in review
2026-11-12 07:46:51 -05:00
.agents chore(safety): forbid destructive device overwrites on CoSSHd and remove mass profile deletion in androidTest 2026-11-09 23:21:59 -05:00
.forgejo/workflows feat(security/assets/docs): implement SSH-256 and SSH-257 2026-11-07 21:10:03 -05:00
.gemini chore: Update reality-checker invocation syntax in qa-gate.py 2026-04-26 15:12:59 -04:00
.github feat(security/assets/docs): implement SSH-256 and SSH-257 2026-11-07 21:10:03 -05:00
app fix(terminal): enable clipboard copy by default, buffer and pace paste micro-chunks & add JvmOverloads to KnownHostsViewModel (SSH-270) 2026-11-12 07:25:41 -05:00
build/tmp feat: implement shift-left CI/CD pipeline 2026-04-30 22:07:45 -04:00
config/detekt feat(cicd): align targetSdk 35, prune legacy dependencies, configure detekt static analysis, and block failing quality gates (SSH-202) 2026-10-20 08:20:23 -04:00
docker/mock-ssh feat(SSH-249): harden mock SSH container port forwarding and channel tracking 2026-10-31 13:17:39 -04:00
docs docs(qa): add screenshot of Google Play release 903 in review 2026-11-12 07:46:51 -05:00
fastlane/metadata/android/en-US fix(release): fix banner layout clipping, tab-bar padding, card-4 idle toggle & guard release signing (SSH-269) 2026-11-12 00:14:23 -05:00
gradle feat(security): harden release build, ProGuard R8 rules, test runner concurrency, and CI detekt pipeline (SSH-246) 2026-10-29 20:17:10 -04:00
metadata fix(release): wire buildUnsigned apk output, sync NDK r29, add squircle background to store/mipmap icons, clean banner hex stream & render authentic unclipped 1080x1920 store screenshots (SSH-269) 2026-11-11 23:40:21 -05:00
scripts fix(release): fix banner layout clipping, tab-bar padding, card-4 idle toggle & guard release signing (SSH-269) 2026-11-12 00:14:23 -05:00
user_stories fix(terminal): enable clipboard copy by default, buffer and pace paste micro-chunks & add JvmOverloads to KnownHostsViewModel (SSH-270) 2026-11-12 07:25:41 -05:00
wiki feat(SSH-214,SSH-215): implement passphrase-protected key decryption, ECDSA parity, and SAF file importer with memory sanitization 2026-10-23 02:02:31 -04:00
.gitignore feat(release): standardize GA store assets, clean master icon, package fastlane metadata & align F-Droid recipe (SSH-269) 2026-11-11 23:22:05 -05:00
.mobsf style: apply spotless/ktlint formatting 2026-05-07 10:21:55 -04:00
.sonarcloud.properties fix(security): resolve Sonar rule S8569 and remove suppressed warnings 2026-05-12 00:56:22 -04:00
AGENTS.md chore(safety): forbid destructive device overwrites on CoSSHd and remove mass profile deletion in androidTest 2026-11-09 23:21:59 -05:00
build.gradle.kts feat(cicd): align targetSdk 35, prune legacy dependencies, configure detekt static analysis, and block failing quality gates (SSH-202) 2026-10-20 08:20:23 -04:00
CoSSH_Project_Specification.md Implement @FullTest annotation and 50kb E2E testing (SSH-49, SSH-50) 2026-04-21 08:33:37 -04:00
GEMINI.md chore(safety): forbid destructive device overwrites on CoSSHd and remove mass profile deletion in androidTest 2026-11-09 23:21:59 -05:00
gradle.lockfile feat(cicd): align targetSdk 35, prune legacy dependencies, configure detekt static analysis, and block failing quality gates (SSH-202) 2026-10-20 08:20:23 -04:00
gradle.properties feat(security): implement binary & reverse-engineering hardening (SSH-247) 2026-11-07 16:38:29 -05:00
gradlew Initialize project structure and CI for CoSSH 2026-04-04 19:35:27 -04:00
lefthook.yml feat: implement shift-left CI/CD pipeline 2026-04-30 22:07:45 -04:00
LICENSE chore: Add GPLv3 LICENSE (SSH-170) 2026-05-11 19:28:02 -04:00
local.properties test: Increase code coverage for SSH-159 2026-05-07 21:46:27 -04:00
README.md feat(security/assets/docs): implement SSH-256 and SSH-257 2026-11-07 21:10:03 -05:00
settings-gradle.lockfile fix(security): resolve Sonar rule S8569 and remove suppressed warnings 2026-05-12 00:56:22 -04:00
settings.gradle.kts build(ci): use GCS Maven Central mirror for Gradle and Robolectric artifact resolution (SSH-268) 2026-11-10 21:53:32 -05:00
test_runner.sh chore(test): Optimize test environment (SSH-167) 2026-05-11 15:11:09 -04:00

CoSSH Icon
CoSSH Banner

CoSSH (Cobalt SSH)

CI Build Status Quality Gate Status Reliability Rating Security Rating Maintainability Rating Coverage Bugs Vulnerabilities Code Smells Technical Debt Duplicated Lines Density Lines of Code

CoSSH is a native, highly secure Android SSH terminal client designed to replace legacy applications. It features a cobalt-blue aesthetic, one-touch connectivity, robust hardware-backed local Keystore encryption, and Google Drive cloud sync.

🚀 Features

  • Native & Modern: Built entirely with Kotlin and Jetpack Compose for a fluid, responsive Android experience.
  • Uncompromising Security:
    • Zero-cleartext volatile state sanitization.
    • Hardware-backed Android Keystore encryption for saved profiles and identities.
    • High-friction Host Key MITM warnings (Trust On First Use).
    • Strict OS-level backup exclusions to protect private keys.
  • Robust Terminal: Full PTY emulation with 256-color support, customizable extra keys (Ctrl, Alt, Esc, Tab, F1-F12), and secure background connection persistence.
  • Advanced Capabilities:
    • RSA and ED25519 Key Generation and PEM parsing.
    • Port Forwarding (Local & Remote).
    • Legacy Telnet protocol support (with explicit insecurity warnings).
  • Cloud Sync (Premium): Securely synchronize your encrypted profiles via Google Drive.

🛠️ Tech Stack

  • Language: Kotlin
  • UI Framework: Jetpack Compose (Material Design 3)
  • Networking: sshj, Apache Commons Net (Telnet)
  • Cryptography: BouncyCastle, Android Security Crypto (EncryptedSharedPreferences)
  • Terminal Emulation: Termux JNI / Terminal-View

🏗️ Getting Started

Prerequisites

  • Android Studio
  • JDK 17+

Build Instructions

To build the application locally:

# Clone the repository
git clone https://github.com/adamoutler/cossh.git
cd cossh

# Run local tests and linting
./gradlew test lint

# Build the debug APK
./gradlew assembleDebug

🧪 Testing and QA

CoSSH adheres to strict "Zero-Tolerance Quality" standards.

  • Minimum 80% Unit Test coverage is strictly enforced via CI.
  • All UI components are verified via Robolectric/Paparazzi snapshot tests.
  • Commits are automatically analyzed by SonarCloud for bugs and vulnerabilities.

🔒 Security & Privacy

Security is the paramount invariant of this project. If you discover a vulnerability, please report it immediately. The app intentionally refuses to fall back to insecure storage mechanisms.

📄 License

This project is licensed under the terms of the GNU General Public License v3.0 — see the LICENSE file for details.