| Crates.io | flightrecorder-linux |
| lib.rs | flightrecorder-linux |
| version | 0.0.1 |
| created_at | 2026-01-13 19:16:44.133557+00 |
| updated_at | 2026-01-13 19:16:44.133557+00 |
| description | Linux-specific implementation for flightrecorder |
| homepage | |
| repository | https://github.com/oxur/flightrecorder |
| max_upload_size | |
| id | 2040984 |
| size | 10,480 |
A system-level service that preserves ephemeral text input, so that work doesn't disappear after critical failures
Like an airplane's black box, flightrecorder runs quietly in the background, capturing your text input across applications. When disaster strikesβapp crashes, network failures, accidental refreshes, or just plain bugsβyour work is safe and recoverable.
Modern applications are shockingly bad at preserving your work:
The psychological toll is real: the anxiety of potential data loss poisons the entire experience of using otherwise-good tools. You shouldn't need to defensively copy everything to a text editor "just in case."
flightrecorder is your safety net:
# From source
git clone https://github.com/YOUR_USERNAME/flightrecorder.git
cd flightrecorder
cargo build --release
cargo install --path .
# Start the daemon
flightrecorder daemon start
# Check status
flightrecorder status
# Search your history
flightrecorder search "that prompt I wrote"
# Recover recent input
flightrecorder recover --last 10
# Recover from a specific app
flightrecorder recover --app "Claude" --last 5
# Recover from a time range
flightrecorder recover --since "1 hour ago"
# Interactive recovery (TUI)
flightrecorder recover --interactive
flightrecorder uses two complementary capture strategies:
Every clipboard operation is captured with:
This catches explicit copies and many form submissions that apps place on the clipboard.
Using platform accessibility APIs, flightrecorder periodically snapshots text from:
This provides comprehensive coverage even when you forget to copy.
~/.local/share/flightrecorder/# ~/.config/flightrecorder/config.toml
[capture]
# Snapshot interval for text fields (seconds)
snapshot_interval = 5
# Minimum text length to capture
min_length = 10
# Applications to exclude
exclude_apps = ["1Password", "Bitwarden", "KeePassXC"]
[privacy]
# Patterns to filter (regex)
filter_patterns = [
"(?i)password",
"(?i)api[_-]?key",
"(?i)secret",
"\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b", # Credit cards
]
[storage]
# Where to store captured data
data_dir = "~/.local/share/flightrecorder"
# Maximum storage size (MB)
max_size_mb = 500
# Retention period (days)
retention_days = 30
flightrecorder/
βββ src/
β βββ main.rs # CLI entry point
β βββ daemon/
β β βββ mod.rs # Daemon orchestration
β β βββ clipboard.rs # Clipboard monitoring
β β βββ accessibility.rs # Text field snapshots
β βββ platform/
β β βββ mod.rs # Platform abstraction
β β βββ macos/ # macOS implementations
β β βββ linux/ # Linux (X11 + Wayland)
β βββ storage/
β β βββ mod.rs # Storage abstraction
β β βββ database.rs # SQLite storage
β β βββ pruning.rs # Automatic cleanup
β βββ privacy/
β β βββ mod.rs # Privacy filtering
β β βββ patterns.rs # Sensitive data detection
β βββ cli/
β βββ mod.rs # CLI commands
β βββ search.rs # Search functionality
β βββ recover.rs # Recovery interface
βββ config/
β βββ default.toml # Default configuration
βββ docs/
βββ ARCHITECTURE.md # Detailed design docs
βββ PRIVACY.md # Privacy deep-dive
βββ PLATFORM_SUPPORT.md # Platform-specific notes
| Platform | Clipboard | Text Field Capture | Status |
|---|---|---|---|
| macOS | β | β (Accessibility API) | Primary target |
| Linux (X11) | β | β (AT-SPI) | Primary target |
| Linux (Wayland) | β | β οΈ (Limited by protocol) | Best effort |
| Windows | β | β | Not planned |
# Debug build
cargo build
# Release build
cargo build --release
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run -- daemon start
| Feature | flightrecorder | Keyloggers | Clipboard Managers |
|---|---|---|---|
| Open source | β | Usually β | Sometimes |
| Cross-platform | β | Varies | Varies |
| Privacy-focused | β | β | Partial |
| Captures text fields | β | Via keystrokes | β |
| Captures clipboard | β | Sometimes | β |
| Filters sensitive data | β | β | β |
| Searchable history | β | Sometimes | Sometimes |
| No raw keylogging | β | β | β |
Like an airplane's flight data recorder (black box):
Contributions welcome! Please see CONTRIBUTING.md for guidelines.
Areas where help is especially appreciated:
MIT License - See LICENSE for details.
Stop losing your work. Start recording what happens in-flight.