Created by Alfredo Rosa - LinkedIn Profile
β οΈ Development Status: This project is currently under active development. The beta version will be available soon.
A modern ReactFlow-based canvas for building eBPF programs visually, based on ReactFlow official examples documentation.
- ReactFlow v12+: Implementation with the latest version
- Custom Nodes:
- AttachmentNode - For program entry points and attachment types
- ConditionalNode - For conditional logic and branching
- MapActionNode - For eBPF map operations
- ReturnActionNode - For program return actions
- PacketAccessNode - For packet data manipulation
- VariableNode - For variable storage and manipulation
- CounterNode - For statistics and counters
- Custom Edges:
- ButtonEdge - Edge with delete button
- Advanced Controls:
- Add nodes randomly
- Add node in center
- Delete selected elements
- Zoom in/out, Fit View, Center
- UI Components:
- MiniMap with custom colors
- Controls with custom styling
- Background with dot pattern
- Panels for information and controls
- π WebVM Integration:
- Test directly in browser-based Linux environment
- One-click WebVM setup
- No local installation required
- Perfect for prototyping and demos
- π₯οΈ v86 Integration:
- Full x86 virtual machine in browser (Arch Linux)
- Complete Linux environment with package manager
- Advanced testing with all system tools
- Comprehensive eBPF development capabilities
- React 18.3.1
- @xyflow/react 12.3.2
- Vite 5.4.10
- Tailwind CSS 3.4.4
cd builder-new
npm installnpm run devThe application will be available at http://localhost:3001
Pull and run the latest image from Docker Hub:
docker run -d -p 3007:3007 qweralfredo/ebpf-design:latestThen access the application at http://localhost:3007
docker-compose up -ddocker build -t ebpf-design .
docker run -d -p 3007:3007 ebpf-designRun eBPF Low-Code Builder directly in your browser without installing anything!
Access via WebVM: WebVM.io
-
Open WebVM.io
-
Clone the repository:
git clone https://github.com/qweralfredo/ebpf-design.git cd ebpf-design -
Install and run:
npm install npm run dev
-
Access the application at the provided local URL (typically
http://localhost:5173or similar)
- β No local installation required
- β Full Linux environment in browser
- β Perfect for testing and demos
- β Access from any device
Run eBPF Builder in a complete x86 virtual machine with Arch Linux!
Access via v86: v86 Emulator
-
Open v86 with Arch Linux
-
Wait for boot (30-60 seconds)
-
Clone and setup:
git clone https://github.com/qweralfredo/ebpf-design.git cd ebpf-design npm install npm run dev -
Access at
http://localhost:3007
- β Full x86 processor emulation
- β Complete package manager (pacman)
- β All system tools available
- β Persistent storage between sessions
- β Comprehensive testing environment
- β Learn eBPF with full Linux access
| Feature | v86 | WebVM |
|---|---|---|
| Boot Time | 30-60s | 5-10s |
| Environment | Full PC | Linux Kernel |
| Tools | Complete system | Limited |
| Performance | Slower | Faster |
| Use Case | Comprehensive | Quick tests |
For detailed information, see V86.md and V86-INTEGRATION.md
src/
βββ components/
β βββ NodeTypes/ # eBPF-specific custom nodes
β βββ Sidebar.jsx # Node palette with drag & drop
β βββ ConfigPanel.jsx # Configuration panel
βββ pages/
β βββ EBPFFlowBuilder.jsx # Main flow component
βββ data/
β βββ ebpfSpec.js # eBPF specifications and initial elements
βββ utils/
β βββ ebpfGenerator.js # Code generation utilities
βββ styles/
β βββ global.css # Global styles with Tailwind
βββ App.jsx # Main app component
βββ main.jsx # Entry point
- Program Entry: Define eBPF program attachment points
- Conditional Logic: If/else branching with condition templates
- Map Operations: Interact with eBPF maps (lookup, update, delete)
- Packet Access: Read/write packet data with bounds checking
- Variables: Store and manipulate data with type safety
- Counters: Increment statistics and monitoring counters
- Return Actions: Program return with verdicts (PASS, DROP, etc.)
- Drag nodes from sidebar to canvas
- Click nodes in sidebar to add to center
- Connect nodes by dragging from handles
- Configure node properties with forms
- Real-time code generation preview
- Add nodes dynamically from palette
- Generate eBPF C code from visual flow
- Clear canvas to start fresh
- Toggle sidebar visibility
- Copy/download generated code
The project is structured for easy customization:
- Colors: Defined in Tailwind CSS classes
- Nodes: Add new types in
/components/NodeTypes/ - Code Generation: Modify templates in
/utils/ebpfGenerator.js - Specifications: Update node definitions in
/data/ebpfSpec.js
This project follows best practices from ReactFlow official documentation:
- https://reactflow.dev/examples/overview
- https://reactflow.dev/api-reference
- https://reactflow.dev/learn
For detailed instructions on using WebVM.io, see WEBVM.md
For WebVM Integration Plugin documentation, see WEBVM-INTEGRATION.md
For detailed instructions on using v86, see V86.md
For v86 Integration Plugin documentation, see V86-INTEGRATION.md
For comprehensive testing guide, see TESTING.md
npm run build- Uses ReactFlowProvider for accessing flow methods
- Implements modern hooks (useNodesState, useEdgesState, useReactFlow)
- Full TypeScript support (configuration ready)
- Responsive and accessible styling with Tailwind CSS
- Real-time eBPF code generation with validation
- Professional node palette with categorization