The project's README from github.com/flamingo-stack/openframe-oss-tenant. As one markdown file: README.md.
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.
openframe-client runs as a system service on Windows, macOS, and Linux; supports script execution, tool management, and self-updating via VelopackTenantAwareMongoTemplate database scopingAll 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 |
# 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 --help
cd clients/openframe-client
./target/debug/openframe-client doctor
sudo ./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:
Full documentation is available in the docs/ directory:
All support, feature requests, bug reports, and development discussions happen in the OpenMSP Slack community — GitHub Issues and GitHub Discussions are not used.