OpenFrame OSS Tenant is the multi-service, multi-tenant open-source foundation of the OpenFrame platform — an AI-powered MSP (Managed Service Provider) platform built by Flamingo that replaces expensive proprietary software with intelligent automation.
It integrates device management, real-time messaging, AI-assisted support (Mingo AI for technicians, Fae for clients), and event-driven automation across a polyglot microservice architecture built on Spring Boot (Java) and Rust.
- AI-Assisted Support — Mingo AI for technicians and Fae for end clients, both powered by streaming LLMs with real-time response delivery
- Cross-Platform Rust Agent —
openframe-clientruns as a system service on Windows, macOS, and Linux; supports script execution, tool management, and self-updating via Velopack - Multi-Tenant Architecture — Full tenant isolation with per-tenant OAuth2 clients, RSA-signed JWTs, and
TenantAwareMongoTemplatedatabase scoping - Real-Time Event Streaming — Apache Kafka + NATS JetStream for device events, script execution results, and AI message chunk delivery
- Remote Management (RMM) — Script execution (bash, PowerShell, Python, Nushell), scheduling, live commands, and compliance checking across all managed endpoints
- Integrated Tool Management — MeshCentral, FleetMDM, and custom tool agents orchestrated through the platform
- SSO Support — Google and Microsoft OIDC integration via the Spring Authorization Server
- GraphQL API — Netflix DGS-powered API service with full multi-tenant scoping
- Open Source & Self-Hostable — Deploy and extend on your own infrastructure
All client traffic passes through the Spring Cloud Gateway. Backend services communicate via HTTP/GraphQL internally and asynchronously via Kafka and NATS JetStream. The Rust agent communicates exclusively over NATS.
graph TB
subgraph Clients["Client Layer"]
FrontendUI["openframe-frontend\n(Web UI)"]
end
subgraph Gateway["Edge Layer"]
GW["Gateway Service :8081\n(Spring Cloud Gateway)"]
end
subgraph CoreServices["Core Services"]
API["API Service :8080\n(Spring Boot + GraphQL)"]
AuthServer["Auth Server :8082\n(OAuth2 / OIDC)"]
ExtAPI["External API :8083\n(Spring Boot REST)"]
StreamSvc["Stream Service :8085\n(Kafka Streams)"]
ClientSvc["Client Service :8084\n(Spring Boot + NATS)"]
end
subgraph AgentLayer["Agent Layer"]
OFClient["openframe-client\n(Rust System Agent)"]
end
subgraph DataLayer["Data Layer"]
Mongo[("MongoDB")]
Cassandra[("Cassandra")]
Pinot[("Apache Pinot")]
Redis[("Redis")]
Kafka[("Apache Kafka")]
NATS[("NATS JetStream")]
end
FrontendUI --> GW
GW --> API
GW --> AuthServer
GW --> ExtAPI
API --> Mongo
API --> Pinot
API --> Kafka
StreamSvc --> Kafka
StreamSvc --> Cassandra
StreamSvc --> Pinot
ClientSvc --> Mongo
ClientSvc --> NATS
AuthServer --> Mongo
OFClient --> NATS
OFClient --> API
| Component | Language | Port | Responsibility |
|---|---|---|---|
| API Service | Java / Spring Boot 3.3 | 8080 | REST + GraphQL APIs; tickets, dialogs, AI settings, tenant management |
| Authorization Server | Java / Spring Authorization Server | 8082 | Multi-tenant OAuth2/OIDC; RSA-signed JWT issuance; SSO (Google, Microsoft) |
| Gateway | Java / Spring Cloud Gateway | 8081 | Security enforcement, JWT validation, routing, WebSocket proxy |
| External API | Java / Spring Boot | 8083 | Rate-limited public API endpoints with API key management |
| Stream Service | Java / Kafka Streams | 8085 | Real-time event normalization, enrichment, Cassandra/Pinot writes |
| Client Service | Java / Spring Boot + NATS | 8084 | Agent lifecycle management, tool orchestration |
| openframe-client | Rust | — | Cross-platform system agent; device registration, script execution, self-update |
- JDK 21 (OpenJDK 21 recommended)
- Apache Maven 3.9+
- Rust 1.78+ (stable) — install via rustup
# 1. Clone the repository
git clone https://github.com/flamingo-stack/openframe-oss-tenant.git
cd openframe-oss-tenant
# 2. Build all backend services (Java / Spring Boot)
mvn clean install -DskipTests
# 3. Build the Rust agent
cd clients/openframe-client
OPENFRAME_VERSION=0.0.0-dev cargo build
# 4. Return to root
cd ../..# Start the API service
mvn spring-boot:run -pl openframe/services/openframe-api./clients/openframe-client/target/debug/openframe-client --helpcd clients/openframe-client
./target/debug/openframe-client doctorsudo ./target/release/openframe-client install \
--serverUrl https://your-openframe-instance.example.com \
--initialKey YOUR_INITIAL_KEY \
--orgId YOUR_ORG_ID| Layer | Technology |
|---|---|
| Backend services | Java 21, Spring Boot 3.3, Spring Cloud Gateway, Spring Authorization Server, Netflix DGS (GraphQL) |
| Endpoint agent | Rust (stable), async-nats, tokio, Velopack |
| Event streaming | Apache Kafka, Kafka Streams |
| Agent messaging | NATS JetStream |
| Primary datastore | MongoDB (multi-tenant, tenant-scoped) |
| Time-series storage | Apache Cassandra |
| Real-time analytics | Apache Pinot |
| Cache / sessions | Redis |
| Shared UI library | @flamingo-stack/openframe-frontend-core (npm) |
openframe-oss-tenant/
├── openframe/
│ └── services/ # Spring Boot microservices
│ ├── openframe-api/ # Core REST + GraphQL API (port 8080)
│ ├── openframe-gateway/ # Spring Cloud Gateway (port 8081)
│ ├── openframe-authorization-server/ # OAuth2/OIDC (port 8082)
│ ├── openframe-external-api/ # Public API (port 8083)
│ ├── openframe-client/ # Agent lifecycle service (port 8084)
│ ├── openframe-stream/ # Kafka Streams (port 8085)
│ ├── openframe-management/
│ └── openframe-config/
├── clients/
│ └── openframe-client/ # Rust cross-platform agent
├── manifests/ # Kubernetes manifests & data service configs
└── pom.xml # Parent Maven POM
The OpenFrame CLI tools are maintained in a separate repository:
- Repository: flamingo-stack/openframe-cli
- Installation: Installation Guide
- Documentation: CLI Documentation
Full documentation is available in the docs/ directory:
- Introduction — What is OpenFrame OSS Tenant?
- Prerequisites — Environment requirements
- Quick Start — Step-by-step setup guide
- First Steps — Explore the platform after setup
- Architecture Overview — Diagrams and component relationships
- Development Guide — Full development documentation
- Contributing Guidelines — How to contribute
All support, feature requests, bug reports, and development discussions happen in the OpenMSP Slack community — GitHub Issues and GitHub Discussions are not used.
- OpenMSP Community: https://www.openmsp.ai/
- Join Slack: Invite Link
- OpenFrame Website: https://openframe.ai
- Flamingo Platform: https://flamingo.run
- Releases: github.com/flamingo-stack/openframe-oss-tenant/releases
