super-utils is a portable, web-based debugging and network toolkit built with Go (Fiber) and HTMX. It allows you to run a wide range of system, network, and diagnostic tools from any browser, with a modern UI and easy deployment via Docker or Helm.
This project serves dual purposes:
- Network Toolkit: A comprehensive web-based debugging and network diagnostic platform
- Microservices Emulator: A book shop microservices architecture emulator for testing and development
The toolkit provides instant access to essential system utilities through a browser interface, while the emulator allows developers to simulate and test microservices architectures without deploying full infrastructure.
- Run System & Network Tools: Execute commands like
ping,tcpdump,nmap,curl,traceroute,iperf, and many more directly from the web UI. - Curl & GraphQL: Test HTTP endpoints and GraphQL queries interactively.
- Network Info: Lookup IP addresses, host details, and network information.
- Single-File HTMX UI: Lightweight, fast, and easy to use. The UI is embedded in the Go binary for portable execution.
- Book Shop Architecture: Simulates a complete book shop microservices ecosystem
- Service Management: Start, stop, and monitor individual microservices
- Service Discovery: Built-in service registry and API gateway
- Interactive Testing: Test service interactions and dependencies
- Development Ready: Perfect for local development and testing
- Docker & Helm Support: Deploy anywhere, from local dev to Kubernetes clusters.
- Multi-Architecture: Supports both AMD64 and ARM64 platforms
- Extensible: Add more tools easily by updating the Dockerfile and UI dropdown.
- Cloud Integration: Built-in support for cloud tools (gsutil, mysqldump, etc.)
super-utils includes a comprehensive set of CLI/network utilities (all available in the Docker image and UI):
apache2-utils, arping, bash, bind-tools, bird, bridge-utils, busybox, busybox-extras, calicoctl, conntrack-tools, ctop, curl, dhcping, drill, ethtool, file, fping, httpie, iftop, iperf, iperf3, iproute2, ipset, iptables, iptraf-ng, iputils, ipvsadm, liboping, mii-tool, mtr, net-snmp-tools, netcat-openbsd, netgen, nftables, ngrep, nmap, nmap-nping, scapy, socat, strace, tcpdump, tcptraceroute, termshark, tshark, websocat
awk, cut, diff, find, grep, sed, vi, vim, wc, gzip, cpio, tar, jq
bash, git, libc6-compat, openssl, py-crypto, py2-virtualenv, python2, python3, util-linux
curl, wget, dig, nslookup, telnet, ssh, lftp, rsync, scp, ab (ApacheBench)
mysql-client, postgresql-client, mongodb-tools, redis
# Install dependencies
cd super-utils
go mod tidy
go run main.go
# Open http://localhost:8080 in your browserdocker run -p 8080:8080 super-utils
# All tools are available inside the container
docker pull quay.io/pepodev/super-utils
# mysqldump
docker run --rm quay.io/pepodev/super-utils "mysqldump --help"
# gsutil // copy local file to google cloud storage
# working directory is /opt/ mount folder in this path to easy use as volume
docker run --rm -v ./service-account:./service-account quay.io/pepodev/super-utils "gcloud activate ./service-account/gcp && gsutils -m copy -r ./dir/ gs://some-bucket"To test multi-architecture builds locally, you need Docker Buildx:
# 1. Create a new builder instance (one-time setup)
docker buildx create --name multiarch --driver docker-container --use
docker buildx inspect --bootstrap
# 2. Build for multiple architectures
# Build and load for local testing (single platform at a time)
docker buildx build --platform linux/amd64 -t super-utils:amd64 --load .
docker buildx build --platform linux/arm64 -t super-utils:arm64 --load .
# 3. Test the built images
docker run --rm super-utils:amd64 /app/super-utils --version
docker run --rm super-utils:arm64 /app/super-utils --version
# 4. Build for multiple platforms and push to registry
docker buildx build --platform linux/amd64,linux/arm64 \
-t quay.io/pepodev/super-utils:latest \
--push .
# 5. Build without pushing (just verify it builds)
docker buildx build --platform linux/amd64,linux/arm64 \
-t super-utils:multiarch .Note:
--loadonly works with single platform builds- For multi-platform builds, you must use
--pushto a registry or omit both flags to just verify the build - QEMU is automatically configured by Docker Desktop for cross-platform builds
- On Linux, you may need to install QEMU:
docker run --privileged --rm tonistiigi/binfmt --install all
cd super-utils/helm
helm install super-utils .
# Exposes service on port 8080The service emulator provides a complete book shop microservices ecosystem for development and testing purposes. Each service is designed to handle a specific business domain with clear boundaries and responsibilities.
- ID:
user-service - Port: 8001
- Database: PostgreSQL
- Purpose: Manages user accounts, profiles, authentication, and authorization
- Key Functions:
- User registration and login
- Profile management
- Password reset
- Role-based access control
- Endpoints:
POST /api/users/register- Register new userPOST /api/users/login- User loginGET /api/users/profile- Get user profilePUT /api/users/profile- Update user profile
- ID:
catalog-service - Port: 8002
- Database: MongoDB
- Purpose: Manages book inventory, product information, and search functionality
- Key Functions:
- Book listings and details
- Category management
- Search and filtering
- Inventory tracking
- Endpoints:
GET /api/books- List all booksGET /api/books/{id}- Get book detailsGET /api/categories- List categoriesGET /api/search- Search books
- ID:
cart-service - Port: 8003
- Database: Redis
- Purpose: Manages user shopping carts and cart items
- Key Functions:
- Add/remove items from cart
- Update quantities
- Cart persistence
- Cart validation
- Endpoints:
GET /api/cart- Get user cartPOST /api/cart/items- Add item to cartPUT /api/cart/items/{id}- Update item quantityDELETE /api/cart/items/{id}- Remove item from cart
- ID:
order-service - Port: 8004
- Database: PostgreSQL
- Purpose: Handles order processing, management, and tracking
- Key Functions:
- Order creation
- Order status tracking
- Order history
- Order cancellation
- Endpoints:
POST /api/orders- Create new orderGET /api/orders- List user ordersGET /api/orders/{id}- Get order detailsPUT /api/orders/{id}/cancel- Cancel order
- ID:
payment-service - Port: 8005
- Database: MySQL
- Purpose: Processes payments and manages payment transactions
- Key Functions:
- Payment processing
- Payment validation
- Refund handling
- Payment status tracking
- Endpoints:
POST /api/payments- Process paymentGET /api/payments/{id}- Get payment statusPOST /api/refunds- Process refund
- ID:
review-service - Port: 8006
- Database: MongoDB
- Purpose: Manages book reviews and ratings from customers
- Key Functions:
- Submit reviews
- Review moderation
- Rating calculations
- Review display
- Endpoints:
POST /api/reviews- Submit reviewGET /api/reviews/book/{bookId}- Get book reviewsGET /api/reviews/user/{userId}- Get user reviews
- ID:
notification-service - Port: 8007
- Database: Redis
- Purpose: Sends notifications to users (email, SMS, in-app)
- Key Functions:
- Order confirmations
- Shipping updates
- Promotional messages
- Account notifications
- Endpoints:
POST /api/notifications- Send notificationGET /api/notifications- List notificationsPUT /api/notifications/{id}/read- Mark as read
- ID:
inventory-service - Port: 8008
- Database: PostgreSQL
- Purpose: Manages real-time inventory levels and stock tracking
- Key Functions:
- Stock level management
- Inventory reservations
- Low stock alerts
- Supplier integration
- Endpoints:
GET /api/inventory/{bookId}- Check stock levelPUT /api/inventory/{bookId}- Update stock levelPOST /api/inventory/reserve- Reserve inventory
- ID:
api-gateway - Port: 8000
- Purpose: Routes requests to appropriate services
- Key Functions:
- Request routing
- Load balancing
- Authentication/Authorization
- Rate limiting
- ID:
service-registry - Port: 8761
- Purpose: Service discovery and registration
- Key Functions:
- Service registration
- Health monitoring
- Service discovery
- Load distribution
The microservices interact in the following sequence:
- Authentication: Users interact with the User Service for authentication
- Browse Catalog: Authenticated users browse books via the Catalog Service
- Shopping Cart: Users add books to their cart using the Shopping Cart Service
- Order Creation: Users checkout, creating an order with the Order Service
- Payment Processing: Payment is processed through the Payment Service
- Inventory Update: Inventory is updated via the Inventory Service
- Notifications: Notifications are sent through the Notification Service
- Reviews: Users can submit reviews via the Review Service
graph TD
A[API Gateway] --> B[User Service]
A --> C[Catalog Service]
A --> D[Cart Service]
A --> E[Order Service]
A --> F[Payment Service]
A --> G[Review Service]
A --> H[Notification Service]
A --> I[Inventory Service]
E --> F
E --> I
E --> H
F --> H
I --> H
C --> G
- API Gateway: Routes requests to appropriate services
- Service Discovery: Kubernetes or Consul for service registration
- Database: Each service has its own database (MySQL, PostgreSQL, MongoDB, Redis)
- Messaging: Kafka or RabbitMQ for inter-service communication
- Caching: Redis for session and cache management
- Monitoring: Prometheus and Grafana for metrics
- Logging: ELK stack for centralized logging
- Open the Web UI: Visit
http://localhost:8080(or your server IP). - Select a Tool: Use the dropdown to choose a tool (e.g.,
tcpdump,nmap,curl). - Enter Arguments: Fill in the arguments field (see example hints for each tool).
- Run & View Output: Click "Run Tool" to execute. Output appears below.
- Other Features: Use the Curl/GraphQL and Network Info sections for specialized queries.
- Access Service Emulator: Navigate to the "Service Emulator" section in the web UI.
- View Services: See all available book shop microservices with their status, port, and database information.
- Start Services: Select services and click "Start Selected" to simulate running microservices.
- Stop Services: Select running services and click "Stop Selected" to stop them.
- Reset All: Use "Reset All Services" to return all services to stopped state.
- Monitor Status: Service cards display real-time status (stopped/running) with color-coded indicators.
- Test Interactions: Use the emulator to test service dependencies and data flows in a microservices architecture.
POST /api/shellβ Run selected tool (tool,args)POST /api/curlβ Curl/GraphQL test (url,graphql)POST /api/networkβ Network info (host)
POST /api/service/startβ Start a microservice (service_id)POST /api/service/stopβ Stop a microservice (service_id)POST /api/service/resetβ Reset all services to stopped stateGET /api/service/statusβ Get status of all services
- Go Fiber Backend: Handles API requests, runs shell commands securely, and serves the embedded UI.
- HTMX Frontend: Single HTML file, embedded in the Go binary, provides a dynamic and responsive interface.
- Dockerfile: Installs all required tools for full functionality in containerized environments.
- Helm Chart: Simplifies deployment to Kubernetes clusters.
super-utils/
βββ main.go # Fiber backend & API server
βββ go.mod # Go module dependencies
βββ web/
β βββ index.html # HTMX single-page UI (embedded)
βββ documents/ # Architecture documentation
β βββ book-shop-architecture.md
β βββ book-shop-services.md
β βββ book-shop-service-emulator-plan.md
βββ Dockerfile # Multi-arch container build with all tools
βββ helm/ # Helm chart for Kubernetes
β βββ Chart.yaml
β βββ values.yaml
β βββ templates/
β βββ deployment.yaml
β βββ service.yaml
βββ AGENTS.md # Agent instructions for development
βββ README.md # This file
βββ _config.yml # Jekyll configuration
- This tool executes shell commands from the browser. Restrict access and run in trusted environments only.
- Consider using authentication, RBAC, or network restrictions for production deployments.
- Output is not sanitizedβavoid running untrusted commands.
- The service emulator is designed for development and testing purposes only.
- Do not expose this service directly to the internet without proper authentication and authorization.
- Use network policies and firewalls to restrict access to authorized users only.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For issues, questions, or suggestions:
- Open an issue on GitHub
- Check existing documentation in the
documents/directory - Review the AGENTS.md file for development guidance
- Add authentication and RBAC support
- Implement actual microservice containers for the emulator
- Add WebSocket support for real-time service monitoring
- Expand tool library with additional diagnostic utilities
- Add service mesh integration (Istio, Linkerd)
- Implement distributed tracing (Jaeger, Zipkin)
- Add metrics collection and visualization
- Create API documentation with Swagger/OpenAPI
MIT