The multi-service, multi-tenant open-source foundation of the OpenFrame platform β An AI-powered MSP platform that replaces expensive proprietary software with open-source alternatives enhanced by intelligent automation.
OpenFrame provides the unified platform that integrates multiple MSP tools into a single AI-driven interface, featuring Mingo AI for technicians and Fae for clients, automating IT support operations across the stack.
- Mingo AI Assistant - Autonomous agent architecture that handles incident triage, alert management, and automated response workflows
- Fae Client Interface - AI-powered client interface for streamlined communication
- Intelligent Data Processing - Real-time event normalization and enrichment with Kafka Streams
- Multi-Tenant by Design - Complete tenant isolation across OAuth clients, JWT tokens, RSA keys, and database documents
- Microservice Foundation - Spring Boot 3.3.0 services with Java 21, designed for scalability and modularity
- Event-Driven Backbone - Kafka + Streams for real-time data flow and processing
- Reactive Edge - Spring WebFlux Gateway for high-performance request routing
- MSP Tool Integration - Fleet MDM, Tactical RMM, MeshCentral for device management and remote access
- Data Pipeline - Apache NiFi, MongoDB, Cassandra, Apache Pinot for analytics and storage
- Real-Time Messaging - NATS/JetStream for agent communication and event handling
- Standardized APIs - REST + GraphQL APIs with OpenAPI documentation
- OAuth2/OIDC Multi-Tenant - Complete authorization server with SSO integration (Google, Microsoft)
- JWT Multi-Issuer Support - Tenant-scoped authentication with cached validation
- API Key Management - Rate-limited external API access with proper authorization
- End-to-End Security - Gateway-enforced security with downstream identity context
Get OpenFrame running locally in under 5 minutes:
# Clone and setup
git clone https://github.com/flamingo-stack/openframe-oss-tenant.git
cd openframe-oss-tenant
# Start dependencies (MongoDB, Redis, Kafka, Cassandra, Pinot, NATS)
./scripts/dev-start-dependencies.sh
# Initialize configuration
./clients/openframe-client/scripts/setup_dev_init_config.sh
# Build and start services
mvn clean install -DskipTests
./scripts/start-all-services.sh
# Access the platform
open http://localhost:3000Expected services after startup:
- Frontend UI:
http://localhost:3000 - API Service:
http://localhost:8080 - Gateway:
http://localhost:8081 - Authorization Server:
http://localhost:8082
OpenFrame follows a layered, event-driven, multi-tenant SaaS architecture:
flowchart TD
UI[Frontend Tenant UI] --> Gateway[Gateway Service]
Chat[Chat Desktop Client] --> Gateway
Gateway --> API[API Service]
Gateway --> External[External API Service]
Gateway --> Auth[Authorization Server]
API --> Mongo[(MongoDB)]
API --> Pinot[(Apache Pinot)]
API --> Kafka[(Kafka Cluster)]
Stream[Stream Service] --> Kafka
Stream --> Cassandra[(Cassandra)]
Stream --> Pinot
Client[Client Service] --> Mongo
Client --> NATS[(NATS/JetStream)]
Auth --> Mongo
| Service | Purpose | Port | Technology |
|---|---|---|---|
| API Service | Internal REST + GraphQL APIs | 8080 | Spring Boot, GraphQL |
| Authorization Server | Multi-tenant OAuth2/OIDC | 8082 | Spring Authorization Server |
| Gateway | Security, routing, WebSocket proxy | 8081 | Spring Cloud Gateway |
| External API | Public API endpoints | 8083 | Spring Boot REST |
| Stream Service | Event processing and enrichment | 8085 | Kafka Streams |
| Client Service | Agent lifecycle management | 8084 | Spring Boot, NATS |
| Frontend UI | Web-based tenant dashboard | 3000 | Node.js with AI/LLM |
| Chat Client | Desktop AI assistant | - | Rust/Tauri |
sequenceDiagram
participant Browser
participant Gateway
participant AuthServer
participant ApiService
participant Database
Browser->>AuthServer: OAuth Login (tenant-scoped)
AuthServer-->>Browser: JWT (tenant_id claim)
Browser->>Gateway: API Request with JWT
Gateway->>Gateway: Validate issuer + signature
Gateway->>ApiService: Forward with identity context
ApiService->>ApiService: Enforce tenant isolation
ApiService->>Database: Query with tenant_id scope
- Java 21 with Spring Boot 3.3.0
- Spring Security with OAuth2/OIDC support
- Spring Cloud Gateway for reactive routing
- Apache Kafka for event streaming
- NATS/JetStream for agent messaging
- MongoDB - Primary transactional storage
- Apache Cassandra - Time-series and log persistence
- Apache Pinot - Real-time analytics and querying
- Redis - Caching and session management
- VoltAgent Core - Intelligent automation framework
- Anthropic SDK and OpenAI integration
- GraphQL - Chat integration with streaming messages
- Real-time dialog orchestration - Zustand stores for message state
Comprehensive documentation is available in the docs directory:
- Getting Started - Quick setup and introduction
- Reference Documentation - Technical architecture and API specs
- Development Guides - Contributing and development workflows
The OpenFrame CLI tools are maintained in a separate repository:
- Repository: flamingo-stack/openframe-cli
- Installation: Installation Guide
- Documentation: CLI Documentation
We welcome contributions! Please see our Contributing Guide for:
- Development workflow and branch naming
- Code style and conventions
- Pull request process and review guidelines
- Testing requirements and quality standards
Join our community:
- Slack: OpenMSP Community
- Documentation: OpenFrame Docs
- Platform: Flamingo - AI-powered MSP platform
- OpenFrame: Product Page - Unified MSP interface
- Community: OpenMSP - Open source MSP community
This project is licensed under the Flamingo AI Unified License v1.0 - see the LICENSE.md file for details.

