A lightweight, modular CLI tool for managing and monitoring eBPF programs on Linux systems. Built in Rust for performance and reliability.
- eBPF Program Management: Load, unload, and monitor eBPF programs
- System Monitoring: Real-time system metrics and process monitoring
- Interactive TUI: Terminal-based user interface for monitoring
- Configuration Management: Flexible configuration system
- Network Monitoring: Network interface and traffic monitoring
- Database Integration: SQLite-based data storage and management
- Rust 1.70+
- Linux kernel 4.18+ with eBPF support
- libbpf development libraries
- clang and llvm for eBPF compilation
# Clone the repository
git clone https://github.com/stackroost/eclipta.git
cd eclipta
# Build from source
cargo build --release
# Install (requires sudo for eBPF operations)
sudo cp target/release/eclipta /usr/local/bin/eclipta# Show welcome message and help
eclipta welcome
# Check system status
eclipta status
# Load a sample eBPF program
eclipta load --program bin/simple_trace.o --name my-tracer
# List loaded programs
eclipta list
# Start interactive monitoring
eclipta monitor
# Unload program
eclipta unload --program my-tracerThe project includes sample eBPF programs for testing:
bin/simple_trace.o- Basic tracepoint programbin/simple_xdp.o- Basic XDP program
To build your own eBPF programs:
cd examples/ebpf
makewelcome- Show welcome message and setup helpstatus- Show CLI runtime statusmonitor- Interactive terminal UI for monitoringlogs- View system or agent logswatch-cpu- Monitor CPU usage
load- Load eBPF programunload- Unload eBPF programlist- List loaded programsinspect- Inspect program detailsupload- Upload program to storageremove- Remove program from storage
ping-all- Check agent connectivityalerts- List alerting agents
config- Manage configurationdaemon- Start daemon process
check-db- Check database statusmigrate- Run database migrations
Configuration is stored in /etc/eclipta/config.yaml. Key settings:
log_level: "info"
daemon_enabled: false
auto_start_programs: false
monitoring_interval: 5eclipta/
├── eclipta-cli/ # Main CLI application
│ ├── src/
│ │ ├── commands/ # Command implementations
│ │ ├── utils/ # Utility functions
│ │ └── main.rs # Entry point
│ └── Cargo.toml
├── examples/ebpf/ # Sample eBPF programs
│ ├── simple_trace.c
│ ├── simple_xdp.c
│ └── Makefile
├── bin/ # Compiled eBPF programs
│ ├── simple_trace.o
│ └── simple_xdp.o
├── eclipta.yaml # Comprehensive documentation
└── README.md
# Development build
cargo build
# Release build
cargo build --release
# Run tests
cargo test
# Format code
cargo fmt
# Lint code
cargo clippy- Create command module in
eclipta-cli/src/commands/ - Add command to
main.rscommand enum - Implement command handler
- Update documentation in
eclipta.yaml
For comprehensive documentation including all commands, options, and examples, see eclipta.yaml.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT © 2025 Mahesh Bhatiya