flamingo-stack/openframe-oss-tenant

Code base for OSS OpenFrame single tenant version

Shell

1,142

3,182 commits

updated Oct 16, 2026

See the code

README

OpenFrame

License

OpenFrame OSS Tenant

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 v0.7.8: Fleet MDM Integration & Platform Architecture Deep Dive


✨ Features

  • 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-client runs 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 TenantAwareMongoTemplate database 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

🏗️ Architecture

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

Core Components

ComponentLanguagePortResponsibility
API ServiceJava / Spring Boot 4.18080REST + GraphQL APIs; tickets, dialogs, AI settings, tenant management
Authorization ServerJava / Spring Authorization Server8082Multi-tenant OAuth2/OIDC; RSA-signed JWT issuance; SSO (Google, Microsoft)
GatewayJava / Spring Cloud Gateway8081Security enforcement, JWT validation, routing, WebSocket proxy
External APIJava / Spring Boot8083Rate-limited public API endpoints with API key management
Stream ServiceJava / Kafka Streams8085Real-time event normalization, enrichment, Cassandra/Pinot writes
Client ServiceJava / Spring Boot + NATS8084Agent lifecycle management, tool orchestration
openframe-clientRust—Cross-platform system agent; device registration, script execution, self-update

🚀 Quick Start

Prerequisites

  • JDK 25 (OpenJDK 25 recommended)
  • Apache Maven 3.9+
  • Rust 1.78+ (stable) — install via rustup

Clone and Build

# 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 ../..

Run a Backend Service

# Start the API service
mvn spring-boot:run -pl openframe/services/openframe-api

Verify the Rust Agent

./clients/openframe-client/target/debug/openframe-client --help

Agent Doctor Check

cd clients/openframe-client
./target/debug/openframe-client doctor

Install Agent as a System Service

sudo ./target/release/openframe-client install \
  --serverUrl https://your-openframe-instance.example.com \
  --initialKey YOUR_INITIAL_KEY \
  --orgId YOUR_ORG_ID

🛠️ Technology Stack

LayerTechnology
Backend servicesJava 25, Spring Boot 4.1, Spring Cloud Gateway, Spring Authorization Server, Netflix DGS (GraphQL)
Endpoint agentRust (stable), async-nats, tokio, Velopack
Event streamingApache Kafka, Kafka Streams
Agent messagingNATS JetStream
Primary datastoreMongoDB (multi-tenant, tenant-scoped)
Time-series storageApache Cassandra
Real-time analyticsApache Pinot
Cache / sessionsRedis
Shared UI library@flamingo-stack/openframe-frontend-core (npm)

📁 Repository Structure

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

🔧 CLI Tools

The OpenFrame CLI tools are maintained in a separate repository:


📚 Documentation

Full documentation is available in the docs/ directory:


🤝 Community

All support, feature requests, bug reports, and development discussions happen in the OpenMSP Slack community — GitHub Issues and GitHub Discussions are not used.


Built with 💛 by the Flamingo team

flamingo-stack/openframe-oss-tenant

Code base for OSS OpenFrame single tenant version

Shell

1,142

3,182 commits

updated Oct 16, 2026

See the code

README

OpenFrame

License

OpenFrame OSS Tenant

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 v0.7.8: Fleet MDM Integration & Platform Architecture Deep Dive


✨ Features

  • 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-client runs 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 TenantAwareMongoTemplate database 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

🏗️ Architecture

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

Core Components

ComponentLanguagePortResponsibility
API ServiceJava / Spring Boot 4.18080REST + GraphQL APIs; tickets, dialogs, AI settings, tenant management
Authorization ServerJava / Spring Authorization Server8082Multi-tenant OAuth2/OIDC; RSA-signed JWT issuance; SSO (Google, Microsoft)
GatewayJava / Spring Cloud Gateway8081Security enforcement, JWT validation, routing, WebSocket proxy
External APIJava / Spring Boot8083Rate-limited public API endpoints with API key management
Stream ServiceJava / Kafka Streams8085Real-time event normalization, enrichment, Cassandra/Pinot writes
Client ServiceJava / Spring Boot + NATS8084Agent lifecycle management, tool orchestration
openframe-clientRust—Cross-platform system agent; device registration, script execution, self-update

🚀 Quick Start

Prerequisites

  • JDK 25 (OpenJDK 25 recommended)
  • Apache Maven 3.9+
  • Rust 1.78+ (stable) — install via rustup

Clone and Build

# 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 ../..

Run a Backend Service

# Start the API service
mvn spring-boot:run -pl openframe/services/openframe-api

Verify the Rust Agent

./clients/openframe-client/target/debug/openframe-client --help

Agent Doctor Check

cd clients/openframe-client
./target/debug/openframe-client doctor

Install Agent as a System Service

sudo ./target/release/openframe-client install \
  --serverUrl https://your-openframe-instance.example.com \
  --initialKey YOUR_INITIAL_KEY \
  --orgId YOUR_ORG_ID

🛠️ Technology Stack

LayerTechnology
Backend servicesJava 25, Spring Boot 4.1, Spring Cloud Gateway, Spring Authorization Server, Netflix DGS (GraphQL)
Endpoint agentRust (stable), async-nats, tokio, Velopack
Event streamingApache Kafka, Kafka Streams
Agent messagingNATS JetStream
Primary datastoreMongoDB (multi-tenant, tenant-scoped)
Time-series storageApache Cassandra
Real-time analyticsApache Pinot
Cache / sessionsRedis
Shared UI library@flamingo-stack/openframe-frontend-core (npm)

📁 Repository Structure

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

🔧 CLI Tools

The OpenFrame CLI tools are maintained in a separate repository:


📚 Documentation

Full documentation is available in the docs/ directory:


🤝 Community

All support, feature requests, bug reports, and development discussions happen in the OpenMSP Slack community — GitHub Issues and GitHub Discussions are not used.


Built with 💛 by the Flamingo team

Significant stargazers

Jatin Sandilya

57 followers · starred Dec 2025

Kamron Batman

145 followers · starred Nov 2025