Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
OpenFrame

License

OpenFrame OSS Frontend

OpenFrame OSS Frontend is the primary web application for the OpenFrame platform — a unified, AI-driven interface for Managed Service Providers (MSPs). It replaces expensive proprietary MSP software with intelligent open-source alternatives, bringing device management, ticketing, monitoring, scripts, and AI assistance into a single cohesive operational interface.

Built and maintained by Flamingo, this project is the human-facing layer of the OpenFrame ecosystem — connecting backend services into an AI-first MSP experience.


Features

FeatureDescription
Device ManagementUnified device model, remote shell, file manager, remote desktop via MeshCentral
Customer ManagementPer-organization AI configuration, guardrails templates, aggregated device counts
TicketingKanban boards, AI-assisted replies, approval workflows, assignment management
Knowledge BaseArticle management, folder organization, attachment handling
Mingo AI (Technician)Streaming AI assistant with tool execution, context awareness, and approval flows
Customer AI (Fae)Embeddable AI for client-facing portals
MonitoringFleet MDM policies, osquery live query campaigns, query execution
ScriptsScript library, scheduling, execution history
Audit LogsOrganization and device-level log viewer with cursor-based pagination
Settings & BillingTenant config, SSO, API keys, subscription management
OnboardingStep-by-step guided setup for new tenants
Feature FlagsRuntime-configurable feature toggles via Zustand

Technology Stack

flowchart TD
    FE["Next.js 16 App Router (React 19)"]
    FE --> TS["TypeScript 5.8"]
    FE --> GQL["GraphQL — graphql + Relay v20"]
    FE --> RQ["TanStack Query v5"]
    FE --> ZS["Zustand v5"]
    FE --> TW["Tailwind CSS v3"]
    FE --> FC["openframe-frontend-core"]
    FE --> API["API Service Core"]
    FE --> Chat["AI / Chat Service"]
    FE --> Auth["Authorization Service"]
    FE --> Fleet["Fleet MDM"]
    FE --> Mesh["MeshCentral"]

Core Dependencies

PackageVersionPurpose
next^16.2.4SSR + App Router framework
react^19.2.0UI library
react-relay^20.1.1GraphQL fragment system
@tanstack/react-query^5.90.16Server-state caching and pagination
zustand^5.0.8Client-side state management
tailwindcss^3.4.17Utility-first CSS
@xterm/xterm^6.0.0Terminal emulator for remote shell
@monaco-editor/react^4.7.0Script editor
zod^4.3.6Runtime schema validation
@flamingo-stack/openframe-frontend-core^0.0.480Shared UI component library

Architecture

OpenFrame OSS Frontend acts as the presentation and orchestration layer on top of OpenFrame backend services.

flowchart LR
    Browser["User Browser"] --> Frontend["OpenFrame OSS Frontend"]
    Frontend -->|"GraphQL /api/graphql"| ApiService["API Service Core"]
    Frontend -->|"REST /chat/api"| ChatService["AI / Chat Service"]
    Frontend -->|"OAuth 2.0"| AuthService["Authorization Service"]
    Frontend -->|"/tools/fleetmdm-server"| Fleet["Fleet MDM"]
    Frontend -->|"/tools/meshcentral"| Mesh["MeshCentral"]
    ApiService --> DataLayer["MongoDB / Cassandra / Apache Pinot"]
    ChatService --> StreamLayer["Kafka / NATS"]

Application Domain Structure

The application is organized by feature domain under src/app:

flowchart TD
    App["src/app"]
    App --> Customers["customers/"]
    App --> Devices["devices/"]
    App --> Tickets["tickets/"]
    App --> KnowledgeBase["knowledge-base/"]
    App --> Logs["logs-page/"]
    App --> Monitoring["monitoring/"]
    App --> Scripts["scripts/"]
    App --> Settings["settings/"]
    App --> Mingo["mingo/"]
    App --> Onboarding["onboarding/"]
    App --> Lib["src/lib/ — API, Auth, Relay, MeshCentral"]
    App --> Stores["src/stores/ — Zustand global state"]

State Management

The application uses three complementary state management approaches:

PatternTechnologyUsed For
Server stateTanStack Query v5REST API calls, optimistic mutations, cursor pagination
GraphQL fragmentsRelay v20Logs, scripts, notifications (streaming + pagination)
Client UI stateZustand v5Feature flags, onboarding, Mingo chat, device filters

Quick Start

Prerequisites: Node.js 18+, npm 9+, Git. See the Prerequisites Guide for full details.

# 1. Clone the repository
git clone https://github.com/flamingo-stack/openframe-oss-frontend.git
cd openframe-oss-frontend

# 2. Install dependencies
npm install

# 3. Configure environment
cp .env.example .env.local
# Edit .env.local with your backend URLs

# 4. Start the development server
npm run dev

Open http://localhost:3000 in your browser.

Minimum Environment Variables

NEXT_PUBLIC_TENANT_HOST_URL=https://your-tenant.openframe.dev
NEXT_PUBLIC_SHARED_HOST_URL=https://api.openframe.dev
NEXT_PUBLIC_APP_MODE=oss-tenant
NEXT_PUBLIC_APP_URL=http://localhost:3000

Refer to your environment configuration for actual backend URLs.

Available Scripts

ScriptDescription
npm run devStart development server with hot reload
npm run buildGenerate schema enums + Relay artifacts + Next.js production build
npm run startStart production server (after build)
npm run lintRun ESLint (the fast pass; rules come from the core library's shared config)
npm run lint:fixESLint autofix
npm run lint:typesESLint type-aware pass (slow — needs an 8 GB heap)
npm run format:fixAuto-fix formatting with Prettier
npm run type-checkTypeScript type checking without emitting
npm run relayCompile Relay GraphQL fragments
npm run relay:watchWatch and recompile Relay fragments on change
npm run fetch-schemaFetch the latest GraphQL schema from the backend

Documentation

📚 See the Documentation for comprehensive guides including getting started tutorials, development workflows, architecture overviews, and API references.


Community & Support

OpenFrame OSS is supported through the OpenMSP Slack community — the primary channel for discussions, questions, and collaboration.

We do not use GitHub Issues or Discussions. All support and coordination happens in Slack.


Contributing

We welcome contributions! Please read the Contributing Guidelines before opening a pull request.

Key points:

  • All code must be TypeScript with strict typing
  • Follow the Conventional Commits format
  • Run npm run type-check, npm run lint, and npm run relay before submitting
  • Coordinate in the OpenMSP Slack community before starting large features

Built with 💛 by the Flamingo team

关于 About

Openframe Frontend for OSS repository

语言 Languages

TypeScript98.4%
JavaScript1.2%
CSS0.3%
Shell0.1%
Dockerfile0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
320
Total Commits
峰值: 42次/周
Less
More

核心贡献者 Contributors