The Problem with Traditional Router Interfaces
After 25 years working with embedded systems and countless hours administering routers through LuCI, Iβve come to a realization: weβre managing 2025βs containerized infrastructure with 2015βs interface paradigms.
LuCI has served us wellβitβs lightweight, functional, and deeply integrated with OpenWrt. But as Iβve been developing SecuBox (my containerized application management platform for embedded devices), the limitations became impossible to ignore:
- No contextual awareness: You see βCrowdSec is runningβ but not what itβs protecting or why it matters
- Static layouts: Designed for desktop browsers when most quick checks happen on mobile
- Monolithic structure: Adding new applications requires deep integration work
- Disconnected metrics: CPU and memory numbers without operational context
When youβre managing security services, monitoring tools, and custom applications across multiple devices (my setup includes ESPRESSObin and MOCHAbin boards), you need more than just on/off switches and process lists.
Enter MTBX: Modular ToolBoX
Let me show you what Iβve been building. Hereβs the actual working prototype:
Live Demo: Fully interactive MTBX dashboard. Try clicking the buttons, expanding details, and exploring the interface!
Open in new window β
Go aheadβclick around. The demo is fully functional with simulated real-time metrics.
Design Philosophy: Context First
Traditional dashboards show you what is running. MTBX shows you what, why, and how well.
From This (Traditional):
1 | CrowdSec - Running |
To This (MTBX):
1 | CrowdSec |
See the difference? Every card tells a complete operational story. As a CrowdSec Ambassador, this level of insight is exactly what you need when demonstrating security posture or troubleshooting protection gaps.
The Architecture: Lessons from the Whiteboard
The original whiteboard design session that started it all
That whiteboard session led to three key architectural decisions:
1. Modules as Packaging Layer
Modules bundle everything an application needs:
- Cards: UI components that auto-generate from container metadata
- Plugins: Extensions that integrate with other services
- Preferences: Application-specific configuration
- Widgets: Reusable display components
1 | { |
2. Hierarchical Configuration
Four tiers that make sense:
1 | Applications (containers) |
This hierarchy means I can run the same SecuBox setup on my Lyon-based production server and Prague development board with different application sets and configurationsβall managed from the same interface paradigm.
3. Responsive by Default
Not as an afterthought, but as a core principle. The grid system adapts from mobile (1 column) to 4K displays (4 columns) using CSS Gridβs auto-fill:
1 | .card-grid { |
No framework needed. Pure CSS. Works beautifully on ARM processors with minimal overhead.
Technical Deep Dive: Building for Embedded
The Lightweight Stack
When youβre running on an ESPRESSObin with 1GB RAM and a dual-core Cortex-A53, every kilobyte matters:
- No framework dependencies: Vanilla JavaScript ES6+
- ~50KB gzipped: Entire dashboard including CSS
- CSS-only animations: Hardware-accelerated, 60fps on ARM
- Progressive enhancement: Works without JavaScript (basic functionality)
Real-Time Updates Without the Bloat
Instead of polling individual endpoints, MTBX uses a single WebSocket connection:
1 | // Efficient metric streaming |
Updates happen every 5 seconds for resources, 15 seconds for status, with full refresh every 5 minutes. On my MOCHAbin managing 8 containers, this consumes ~30MB RAM total.
Contextual Intelligence
The magic happens in how context is generated. Each card type knows what information matters:
Security Services (CrowdSec, Firewalls):
- Protection scope and recent activity
- Threat statistics and blocking patterns
- Community integration status
Monitoring Tools (Netdata):
- Collection coverage and frequency
- Anomaly detection state
- Dashboard access points
Network Services (Netifyd):
- Interfaces monitored and flow rates
- Application detection capabilities
- DPI engine status
This isnβt hardcodedβitβs derived from container labels and runtime inspection. Deploy a new container with proper labels, and MTBX auto-generates an appropriate card.
Real-World Use Cases
1. CrowdSec Ambassador Demonstrations
When showcasing CrowdSecβs capabilities, the MTBX interface provides instant credibility:
1 | π‘οΈ Live Threat Overview |
Geographic threat visualization, scenario breakdowns, and real-time blockingβall in a single, professional interface.
2. ARM Development Workflow
My PiDebugger project (Raspberry Pi Zero W-based ARM debugger) benefits from MTBX integration:
1 | π§ Development Dashboard |
All accessible from mobile while Iβm at the workbench with an actual board.
3. Creative Projects Management
Managing my Yi Jing Oracle application (Streamlit-based with sacred frequency audio):
1 | β―οΈ Yi Jing Oracle |
Even stopped containers provide valuable context and history.
The French Connection: Multi-Language Context
SecuBox deployments span Lyon, Prague, Turin, and New York (connecting nodes for my cybersecurity research). MTBXβs context system is designed for internationalization:
1 | // Context generation with i18n support |
The interface language adapts, but more importantly, contextual descriptions translate naturallyβnot just UI labels.
Performance: Numbers from Real Hardware
Testing on my ESPRESSObin (Marvell Armada 3720, 1GB RAM):
| Metric | Value | Notes |
|---|---|---|
| Initial Load | 1.8s | Over LAN |
| Time to Interactive | 2.7s | All cards rendered |
| Card Rendering | <100ms | Per card |
| Update Latency | <50ms | WebSocket to UI |
| Memory Footprint | ~30MB | 20 containers managed |
| CPU Impact | <2% | Background updates |
For comparison, LuCI on the same hardware takes ~2.2s to load the main status page with significantly less information displayed.
From Prototype to Production
This isnβt vaporwareβitβs working code. Hereβs the migration strategy Iβm using:
Phase 1: Parallel Deployment (Current)
- MTBX runs alongside LuCI on port 8443
- Both interfaces functional
- Gathering real-world feedback
- Iterating on UX patterns
Phase 2: Feature Parity (In Progress)
Essential LuCI functions being implemented:
- β Container management
- β System monitoring
- β³ Network configuration
- β³ Wireless settings
- β³ Firewall rules
Phase 3: Default Replacement (Planned Q1 2026)
- MTBX becomes default for new SecuBox installations
- Migration tool for existing configurations
- LuCI remains available as fallback
- Eventually package as standalone OpenWrt package
Code: Open Source Spirit
The MTBX project embodies the open-source principles that have guided my 25 years in this field:
1 | # Clone and explore |
Visit localhost:8080 and you have a working dashboard. Modify the HTML, see changes instantly. No webpack, no npm dependencies, no compilation steps.
Repository structure:
1 | mtbx/ |
Future Vision: AI-Assisted Administration
The modular architecture enables exciting possibilities:
Smart Context Generation
1 | π€ AI Insights |
Predictive Alerts
1 | π Resource Forecast |
Automated Troubleshooting
1 | π Correlation Detected |
Lessons Learned: UX in Constrained Environments
Building for embedded systems teaches humility:
Every animation must justify its bytes: That smooth card expansion? Pure CSS transform, ~200 bytes.
Progressive enhancement isnβt optional: JavaScript fails, network drops, WebSocket disconnectsβdesign for graceful degradation.
Context beats features: Users donβt want more buttons; they want to understand whatβs happening now.
Responsive is non-negotiable: βDesktop-onlyβ died in 2015, but embedded interfaces still pretend otherwise.
Performance is a feature: Sub-second interactivity isnβt luxury; itβs respect for the userβs time.
Call to Action: Join the Development
MTBX is open for contributions, feedback, and real-world testing:
Try It Yourself
- Download:
git clone https://github.com/cybermind/mtbx.git - Deploy: Works on any OpenWrt device with Docker support
- Customize: Add your own modules and widgets
- Share: Feedback welcome via GitHub issues or cybermind.fr forum
Contribute
- Module developers: Create cards for your applications
- Designers: Propose alternative themes and layouts
- Translators: Help with internationalization
- Testers: Real-world deployment experiences valued
Discussion
Join the conversation:
- Forum: community.cybermind.fr/mtbx
- Discord: discord.gg/cybermind
- Email: gandalf@cybermind.fr
Conclusion: Beyond Router Administration
MTBX started as a LuCI replacement but evolved into something more: a framework for understanding complex systems through contextual intelligence.
Whether youβre managing security infrastructure as a CrowdSec Ambassador, debugging ARM boards with PiDebugger, or running creative applications like my Yi Jing Oracle, the principles remain:
β Context over data
β Understanding over metrics
β Modularity over monoliths
β Responsiveness over rigid layouts
The demo above isnβt just a mockupβitβs a vision of what embedded system administration can become. Professional, contextual, and dare I sayβ¦ enjoyable.
Try the live demo, explore the documentation, and join us in building the next generation of embedded interfaces.
β Gandalf
Founder, CyberMind | CrowdSec Ambassador | Conjurer of Code since 1982
Technical Appendix
For those interested in implementation details:
Browser Compatibility
- Chrome/Chromium 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- Mobile browsers (iOS Safari, Chrome Mobile)
System Requirements
Minimum:
- 128MB RAM available
- 10MB storage
- ARMv7 processor
Recommended:
- 256MB RAM available
- 50MB storage (with caching)
- ARMv8 (64-bit) processor
API Endpoints
1 | GET /api/modules # List all modules |
Related Projects
- SecuBox: github.com/cybermind/secubox
- PiDebugger: github.com/cybermind/pidebugger
- CrowdSec Integration: github.com/cybermind/luci-app-crowdsec
Last updated: December 24, 2025
Article version: 2.0 with contextual information integration
Demo version: Interactive MTBX v2.0