Skip to content
FKC.
  • About
  • Experience
  • Skills
  • Projects
  • Contact
Let's Talk
FKC.

Python Full Stack Developer building scalable backends and polished React frontends.

Explore

  • About
  • Experience
  • Skills
  • Projects
  • Contact

Connect

© 2026 Mohammed Farhan K C. All rights reserved.

Built with Next.js, Tailwind & shadcn/ui

FrontendPersonalOpen Source

SSHub

A cross-platform SSH manager built with Flutter - desktop-first (Windows) but running from a single codebase on macOS, Linux, Android, and iOS. Servers are saved as cards with live online/offline reachability and opened into a real xterm terminal backed by dartssh2. The app is offline-first and security-focused: passwords and private keys live in the OS keychain via flutter_secure_storage, host keys are pinned on first use and re-verified on every connect, and encrypted backups move data between machines without any cloud account. It is structured with feature-first clean architecture (domain/data/presentation), flutter_bloc for state, and a DI service locator, with cross-platform installers built by GitHub Actions on every release tag.

Key Highlights

  • Password or SSH key authentication built on dartssh2 - OpenSSH, RSA, and EC private keys with an optional passphrase and file import; a connect usecase switches auth strategy per server and decrypts keys via SSHKeyPair.fromPem, surfacing friendly errors on a wrong passphrase or malformed key instead of a raw exception
  • Trust-on-first-use host key verification - each server's fingerprint is pinned in secure storage on first connect and re-checked on every session; a changed key aborts the connection (SSHHostkeyError) with a clear warning rather than silently trusting it, guarding against man-in-the-middle
  • Full xterm terminal via a vendored xterm fork (patched for a Flutter 3.44+ Windows keyboard-input bug) - copy, paste, select-all, find-in-scrollback with match navigation, and a smart Ctrl+C that copies when text is selected and sends SIGINT otherwise
  • Auto-reconnect that distinguishes a clean logout from a dropped link - it arms on the session's done future and only retries when no exit code was received (a real drop), backing off across attempts and surfacing a Reconnecting state, so a normal exit never triggers a pointless reconnect
  • Encrypted backups by default - AES-256-GCM with PBKDF2-HMAC-SHA256 (600k iterations) key derivation, and private keys are deliberately stripped from exports so a shared backup file can't leak a reusable credential, while passwords stay since SSHub is often their only store
  • Local-only and private by design - credentials in the OS keychain (Windows DPAPI, macOS Keychain, Android Keystore, libsecret) through flutter_secure_storage, an optional app lock with biometric/system unlock, and the server list stored as on-device JSON; no accounts, no cloud, no telemetry
  • Feature-first clean architecture (domain/data/presentation) with flutter_bloc Cubits and Blocs, sealed states, and a DI service locator; live server reachability, snippets, keyboard shortcuts, an in-app update check, and a GitHub Actions pipeline that builds a Windows installer (Inno Setup), a macOS dmg, a Linux AppImage, and an Android apk on every tag
S
Live DemoSource Code

Tech Stack

FlutterDartBlocCubitdartssh2xtermSSHflutter_secure_storageAES-256-GCMPBKDF2Clean ArchitectureDesktopCross-PlatformGitHub Actions