| Component | Build Status | Lint Status | Code Coverage |
|---|---|---|---|
| feral-controld | |||
| feral-setupd | |||
| feral-sys-monitord | |||
| feral-watchdog |
FFOS-USER provides components and user data to the FFOS build system. Build orchestration lives in the FFOS repo, while this repo focuses on component source and user data. CI workflows here run tests and lint only.
┌───────────────────────────────────────────────────────────┐
│ ffos-user Repository │
│ │
│ ┌──────────────────┐ ┌─────────────────┐ │
│ │ components/ │ │ users/ │ │
│ │ │ │ │ │
│ │ ┌──────────────┐ │ │ ┌─────────────┐ │ │
│ │ │feral-controld│ │ │ │ feralfile │ │ │
│ │ │feral-setupd │ │ │ │ soaktest │ │ │
│ │ │feral-sys- │ │ │ │ │ │ │
│ │ │ monitord │ │ │ │ Configs │ │ │
│ │ │feral-app- │ │ │ │ Scripts │ │ │
│ │ │ monitord │ │ │ │ Data │ │ │
│ │ │feral-watchdog│ │ │ └─────────────┘ │ │
│ │ │launcher-ui │ │ │ │ │
│ │ │player-wrapper│ │ │ │ │
│ │ │ -ui │ │ │ │ │
│ │ └──────────────┘ │ │ │ │
│ └──────────────────┘ └─────────────────┘ │
└───────────────────────────────────────────────────────────┘
│
▼
┌─────────────────┐
│ ffos Build │
│ Repository │
└─────────────────┘
ffos-user/
├── components/ # Service components
│ ├── feral-controld/ # Connection daemon
│ │ ├── main.go
│ │ ├── go.mod
│ │ └── ...
│ ├── feral-setupd/ # Setup daemon (Rust)
│ │ ├── src/
│ │ ├── Cargo.toml
│ │ └── ...
│ ├── feral-sys-monitord/ # System monitoring
│ ├── feral-watchdog/ # System watchdog
│ ├── launcher-ui/ # Launcher UI components
│ └── player-wrapper-ui/ # Player wrapper UI
└── users/ # User data and configurations
├── feralfile/ # feralfile user data
│ ├── scripts/ # User scripts
│ │ ├── start-kiosk.sh
│ │ ├── feral-updater.sh
│ │ └── ...
│ ├── .config/ # User configurations
│ │ │ ├── systemd/user/
│ │ │ │ ├── feral-sys-monitord.service
│ │ │ │ ├── feral-setupd.service
│ │ │ │ ├── chromium-kiosk.service
│ │ │ │ └── ...
│ │ ├── controld.json
│ │ └── watchdog.json
│ ├── .bash_profile # Shell configuration
│ └── ...
└── soaktest/ # soaktest user data
├── scripts/ # Test scripts
├── logs/ # Test logs
├── files/ # Test files
└── ...
- Purpose: Manages device connectivity and communication
- Language: Go
- Dependencies: WebSocket, HTTP, CDP
- Build Output:
feral-controld-{version}-x86_64.pkg.tar.zst
- Purpose: Handles device initialization and configuration
- Language: Rust
- Dependencies: Bluetooth, WiFi, System APIs
- Build Output:
feral-setupd-{version}-x86_64.pkg.tar.zst
- feral-sys-monitord: System resource monitoring
- feral-watchdog: System watchdog and recovery
- launcher-ui: Main launcher interface
- player-wrapper-ui: Media player wrapper interface
users/feralfile/
├── scripts/ # System scripts
│ ├── start-kiosk.sh # Kiosk mode startup
│ ├── feral-updater.sh # System update
│ ├── log-rotation.sh # Log management
│ └── ...
├── .config/ # Application configs
│ ├── systemd/user/ # Systemd services
│ │ ├── feral-sys-monitord.service
│ │ ├── feral-setupd.service
│ │ ├── chromium-kiosk.service
│ │ └── ...
│ ├── controld.json # Connection daemon config
│ └── watchdog.json # Watchdog config
└── .bash_profile # Shell environment
users/soaktest/
├── scripts/ # Test automation
│ └── soak-test.sh # Soak testing
├── logs/ # Test output
├── files/ # Test assets
└── .bash_profile # Test environment
Developer → ffos-user/components/ → ffos build process → R2 Storage
ffos-user/users/feralfile/ → ISO /home/feralfile/
ffos-user/users/soaktest/ → ISO /home/soaktest/ (conditional)
ffos-user/users/feralfile/.config/ → ISO /home/feralfile/.config/
ffos-user/users/feralfile/scripts/ → ISO /home/feralfile/scripts/
- FFOS references specific ffos-user commits/tags
- Enables reproducible builds
- Supports multiple component versions
- FFOS checkout ffos-user at specified reference
- Builds components from source
- Merges user data into ISO
ffos-user/main → ffos build → R2/{main}/
ffos-user/develop → ffos build → R2/{develop}/
- Use conventional commit format
- Prefix with component name for clarity
- Example:
feral-controld: add heartbeat functionality
This repository is purely for source code and data. All build logic is handled by the FFOS repository.
Use the component sync helpers to push local changes to an FF1 over SSH (key-based).
# Default host + key
make -C components sync-feral-controld
# Override host or key
REMOTE_HOST=ff1-03vdu3x1.local REMOTE_KEY=~/.ssh/id_ed25519 make -C components sync-feral-controld