Skip to content
Back to projects

Falco

Portable SSH launchers for people and AI agents.

Launchers reveal connection metadata. Encrypted-key builds contain a private key and must stay private.

Year
2026
Role
Design and implementation
Current Falco macOS editor with password or encrypted-key authentication, VPN reminder, and platform output settings
The macOS editor, captured from the working app.

Overview

Falco turns a server connection into a portable executable and a generated how-to-use.md guide. A Python desktop editor—or the same editor in headless mode—stamps connection settings into prebuilt Rust launchers for macOS, Windows, and Linux. After private first-run credential setup, people or shell-capable AI agents can run commands, open a terminal, and manage files over SFTP. Passwords stay in the OS credential store; the launcher still reveals its host, port, and username, and optional encrypted-key launchers embed a private key and should stay private.

Technology

  • Rust
  • tokio
  • russh
  • russh-sftp
  • ssh-key
  • keyring
  • Python 3.12
  • Tkinter
  • PyInstaller
  • GitHub Actions

Built around

  1. Builds need no compiler or network connection. The GUI and headless builder use the same prebuilt Rust stubs and produce the same executables and agent instructions, including a VPN reminder when needed.
  2. Host identity is now pinned on first use in the OS store. Changed host keys are rejected before authentication; accepting a new fingerprint is an explicit action, not an automatic retry. First-use trust still requires a trusted network or independent fingerprint verification.
  3. Passwords and key passphrases are entered only in a private terminal prompt, never via arguments, environment variables, or agent chat. Missing unattended setup and other launcher failures produce structured JSON diagnostics with suggested next actions.
  4. Commands stream their remote output and return the actual exit status. SFTP supports files, directories, listing, moves, and removal. Release publication waits for Python and Rust checks on all three operating systems.

If I kept going

  1. Sign distributed editors and launchers so recipients can verify provenance without bypassing platform safeguards.
  2. Make first-connection identity verification clearer and keep the encrypted-key sharing risks explicit in the editor and generated guide.
Next projectMaine