# Full workspace
cargo build
# Individual crates
cargo build -p parasite-core
cargo build -p parasite-agent
cargo build -p parasite-client
# Release
cargo build --release
parasite/
├── Cargo.toml Workspace root
├── docs/ Documentation (this wiki)
├── crates/
│ ├── parasite-core/ Shared library
│ │ ├── config/ Config template (config.toml)
│ │ ├── scripts/ Remote operation scripts
│ │ │ ├── unix/ Bash (Linux/macOS)
│ │ │ └── windows/ PowerShell (Windows)
│ │ └── src/
│ ├── parasite-agent/ Remote agent
│ └── parasite-client/ TUI client
├── install.sh Agent install script
└── uninstall.sh Agent uninstall script
Action enum in action.rsapp/dispatch/*.rs moduleapp/dispatch/mod.rs → dispatch_action()Message enum in parasite-core/src/protocol.rsparasite-agent/src/session.rs (or file_ops.rs)app/dispatch/network.rs (for incoming messages)components/Component trait:
handle_key_event() — return Action variantshandle_action() — react to state changesrender() — draw with ratatuiView variant if it needs its own screenApp::draw() and App::handle_event()impl blocks across files in the same modulepub(super) for methods shared between submodulesparasite-core/config/config.toml, internal constants in parasite-core/src/constants.rsparasite-core/scripts/{unix,windows}/anyhow for client, ParasiteError for typed errors in coretracing crate — info for normal operations, warn for recoverable errors, error for failurescargo clippy --workspace
The only expected warning is exit_code never read in action.rs (reserved for future use).