Modern Remote Desktop Portal for Wayland Compositors
A production-ready remote desktop solution that provides secure, low-latency access to Wayland desktop sessions through capability-based backend discovery and runtime configuration.
- Ubuntu 22.04+ or similar Linux distribution
- Rust 1.75+
- libvirt (for VM demos)
cargo build --workspace --all-featurescargo test --workspace./RUN_DEMO.shSee QUICK_START.md for the fastest way to get started!
Detailed instructions: QUICKSTART.md
- QUICK_START.md โญ - Fastest way to get started!
- AUTONOMOUS_PROVISIONING.md ๐ค - Zero-human-interaction VM provisioning
- QUICKSTART.md - Detailed build and run instructions
- STATUS.md - Current project status and metrics
- PROJECT_COMPLETION_SUMMARY.md - Complete project overview
- DEMO_GUIDE.md - Complete demo guide with troubleshooting
- CAPABILITY_BASED_VM_DISCOVERY.md - Primal discovery patterns
- BENCHSCALE_INTEGRATION.md - benchScale v2.0.0 integration
- SCREEN_CAPTURE_PIPEWIRE.md - PipeWire-first capture architecture
- docs/testing/ - Test plans and results
- docs/reports/ - Historical session reports
- DOCUMENTATION_INDEX.md - Complete documentation index
- NEXT_STEPS.md - Future enhancements
- โ Wayland Native - Full support for modern compositors (COSMIC, Sway, etc.)
- โ Zero Hardcoding - All configuration via runtime discovery
- โ Capability-Based Discovery - Runtime backend selection
- โ Primal Philosophy - Self-knowledge only, discover at runtime
- โ Production Ready - Zero technical debt, zero unsafe code
- โ Modern Rust - Async/await, clippy-clean, idiomatic patterns
- COSMIC Compositor - Full integration with System76's COSMIC
- Generic Wayland - Works with any wlroots-based compositor
- Extensible - Easy to add new backends via traits
- VM Provisioning - Automated VM creation via benchScale
- Remote Desktop - RustDesk installation and configuration
- Portal Deployment - Complete ionChannel build and deployment
- E2E Verification - Health checks and integration tests
- Event Streaming - Full observability for AI agents
ionChannel follows "primal philosophy":
- Self-Knowledge Only - Code only knows about itself
- Runtime Discovery - Find other components at runtime
- Capability-Based - Select by capability, not name
- Environment-Driven - Zero hardcoded configuration
// Backends discovered at runtime
trait DesktopBackend {
async fn is_available(&self) -> bool;
fn capabilities(&self) -> BackendCapabilities;
async fn inject_input(&self, event: InputEvent) -> Result<()>;
async fn capture_screen(&self) -> Result<Frame>;
}
// VM backends discovered at runtime
trait VmBackendProvider {
async fn is_available(&self) -> bool;
fn capabilities(&self) -> Vec<VmCapability>;
async fn create_provisioner(&self) -> Result<Arc<dyn VmProvisioner>>;
}All crates explicitly forbid unsafe code:
#![forbid(unsafe_code)]Production Ready - December 27, 2025
- Tests: 11/11 passing โ
- Unsafe Code: 0 โ
- TODOs: 0 in production โ
- Mocks: 0 in production โ
- Hardcoded Values: 0 โ
- Crates: 9 production crates
- Lines of Code: ~15,000
- Documentation: 20 files
- Examples: 6 runnable demos
- Test Coverage: Comprehensive unit + integration
See STATUS.md for detailed metrics.
./RUN_DEMO.shShows: Discovery โ Provisioning โ Installation โ Deployment โ Verification
cargo run -p ion-validation --example discover_and_provision --features libvirtShows: Runtime backend discovery with capability queries
cargo run -p ion-validation --example create_working_vm --features libvirtShows: Basic VM provisioning and SSH verification
See DEMO_GUIDE.md for all demo options.
cargo test --workspace./TEST_SUITE.shcargo test -p ion-validation --features libvirtAll configuration via environment variables (zero hardcoding):
export VM_SSH_USER="ubuntu"
export VM_SSH_PASSWORD="ubuntu"
export BENCHSCALE_LIBVIRT_URI="qemu:///system"export RUSTDESK_VERSION="1.2.3"
export RUSTDESK_DOWNLOAD_URL="https://github.com/rustdesk/rustdesk/releases/..."export IONCHANNEL_REPO_URL="https://github.com/YourOrg/ionChannel.git"
export BUILD_RELEASE="false"See DEMO_GUIDE.md for complete configuration reference.
ionChannel/
โโโ crates/
โ โโโ ion-core/ # Core backend discovery
โ โโโ ion-traits/ # Shared trait definitions
โ โโโ ion-portal/ # Desktop portal service
โ โโโ ion-compositor/ # Compositor integration
โ โโโ ion-backend-cosmic/ # COSMIC backend
โ โโโ ion-backend-wayland/# Generic Wayland backend
โ โโโ ion-validation/ # E2E validation framework
โ โโโ ion-deploy/ # Deployment tools
โ โโโ ion-test-substrate/ # Test utilities
โโโ benches/ # Performance benchmarks
โโโ docs/ # Detailed documentation
โ โโโ reports/ # Session reports
โโโ specs/ # Specifications
โโโ examples/ # Usage examples
ionChannel follows strict principles:
- No Unsafe Code - All crates forbid unsafe
- No Hardcoding - All config from environment
- No Mocks in Production - Complete implementations only
- Primal Philosophy - Runtime discovery, capability-based
- Modern Rust - Async/await, traits, Result-based errors
Dual-licensed under Apache 2.0 or MIT.
See LICENSE-APACHE and LICENSE-MIT for details.
Built with:
- COSMIC - Modern Wayland compositor
- benchScale - VM management framework
- RustDesk - Open source remote desktop
- Main Documentation: FINAL_STATUS_COMPLETE.md
- Demo Guide: DEMO_GUIDE.md
- Current Status: STATUS.md
- Quick Start: QUICKSTART.md
Run ./RUN_DEMO.sh to see it in action! ๐