Manage your infra
with confidence

A modern, developer-first platform to monitor containers, manage access, and orchestrate your deployments — built with FastAPI, DDD, and clean architecture.

1# Bounded Context — Container Management
2class ContainerService:
3 """Domain service for container orchestration"""
4
5 async def start(self, ContainerId(id)):
6 container = await self.repo.find(id)
7 container.start()
8 await self.events.publish(
9 ContainerStarted(id=id)
10 )
12
Bounded Contexts
50+
REST Endpoints
100%
HTMX Powered
0 npm
Dependencies

What you can do with Infra UI

A comprehensive platform that handles everything from container orchestration to security monitoring — all from a single, modern dashboard.

Container Management

Start, stop, restart, and monitor Docker containers in real time. Full lifecycle control from a clean dashboard.

Learn more
Real-Time Monitoring

CPU, memory, network, and disk usage streamed live via WebSocket. Historical charts with Chart.js for trend analysis.

Learn more
Security Monitoring

Vulnerability scanning, CVE tracking, and GDPR compliance checks. Real-time security posture for every application.

Learn more
Access Control

JWT authentication, role-based access control, groups, API tokens — granular permissions for every operation.

Learn more
AI Assistant

LLM-powered assistant with tool calling and RAG. Ask questions about your infrastructure and get actionable answers.

Learn more
Multi-Tenant

Isolated tenants with separate data, users, and configurations. Perfect for SaaS platforms and managed services.

Learn more

Built with clean architecture

Domain-Driven Design, CQRS, and event-driven communication between bounded contexts — the way it should be.

Domain-Driven Design

12 bounded contexts with rich domain models, value objects, and domain events.

CQRS & Event Sourcing

Commands and queries are separated. Domain events propagate changes across contexts via RabbitMQ.

HTMX Frontend

No JavaScript build step. Server-rendered templates with HTMX for partial updates and interactivity.

Persistent Events

PostgreSQL with pgvector for embeddings. Redis for caching. Alembic for migrations.

1# Domain Entity — Tenant
2class Tenant(AggregateRoot):
3 id: TenantId
4 name: str
5 plan: Plan
6
7 @classmethod
8 def create(cls, name, plan) -> "Tenant":
9 tenant = cls(
10 id=TenantId.generate(),
11 name=name,
12 plan=plan,
13 )
14 tenant.record_event(
15 TenantCreated(
16 tenant_id=tenant.id,
17 name=name
18 )
19 )
20 return tenant

Get started in minutes

Everything you need to go from zero to a running instance.

1. Install

Pull the Docker image or clone the repo and run docker compose up.

2. Configure

Set your environment variables, database URL, and tenant settings.

3. Launch

Start the API, run migrations, and open the dashboard in your browser.

4. Deploy

Add your containers, configure monitoring, and invite your team.

Join the community

Built by developers, for developers. Open source and open to contributions.

Contribute

Check out the source code, report issues, and submit pull requests on GitHub.

View on GitHub
Documentation

Comprehensive docs covering setup, architecture, API reference, and deployment guides.

Read Docs
API Reference

Auto-generated OpenAPI docs for every endpoint. Test directly from the browser.

API Docs

Ready to take control of your infrastructure?

Start monitoring, managing, and securing your containers today.

Launch Dashboard
Stay updated with Infra UI