A modular, company-agnostic process orchestration and workflow management platform built with Electron, React, and TypeScript.
- Modular Plugin System - Dynamically load and manage feature modules
- Service Orchestration - Start, stop, and monitor local development services
- Dynamic Service Discovery - Automatically discovers services from modular YAML files
- Git Manager - Track merge requests/pull requests across GitLab, GitHub, and more
- Dark/Light Theme - Beautiful Material-UI interface with theme support
- Flexible YAML Configuration - User-editable configuration with no hardcoded service definitions
- macOS Native - Built and tested for macOS (Apple Silicon & Intel)
# Install dependencies
npm install
# Run in development mode (Electron)
npm run electron:dev
# Build for production
npm run electron:buildFlowForge uses YAML configuration files with environment-aware path resolution:
| Mode | Config Location | Use Case |
|---|---|---|
| Production (built app) | ~/.flowforge/config/ |
End users with the desktop app |
Development (npm run electron:dev) |
<project-root>/config/ |
Developers working on FlowForge |
Note: If you want to use the built-in example configs and team presets, use the built desktop app. In dev mode, configs are read from the project's
config/directory (with fallback toconfig.templates/).
app.config.yaml- Main application settings and module definitionsteam-presets.yaml- Team configurations and preset servicesglobal-settings.yaml- IDE, terminal, and file manager settingsservices/- Modular service definitions (auto-discovered)services/backend/- Backend servicesservices/frontend/- Frontend applicationsservices/microservices/- Microservicesservices/infrastructure/- Infrastructure services
On first run, config files are automatically created from config/examples/. You can:
- Edit existing services in the
services/directory - Add new services by creating
.yamlfiles in anyservices/subdirectory - Customize teams in
team-presets.yaml - Configure tools (IDE, terminal, file manager) in
global-settings.yaml
See config/docs/QUICK-START.md for detailed setup instructions.
flow-forge/
├── config/ # YAML configuration files (user-editable)
│ ├── examples/ # Example configurations (copied on first run)
│ │ ├── app.config.yaml
│ │ ├── team-presets.yaml
│ │ ├── global-settings.yaml
│ │ └── services/ # Example service definitions
│ └── docs/ # Configuration documentation
│ ├── QUICK-START.md
│ ├── SERVICE-DEFINITION.md
│ └── TROUBLESHOOTING.md
├── docs/ # Architecture & contributing guides
├── electron/ # Electron backend
│ ├── database/ # SQLite database (user preferences only)
│ ├── service-orchestration/ # Service management
│ │ └── config/
│ │ └── service-loader.js # Dynamic service discovery
│ └── utils/ # Backend utilities
└── src/ # React frontend
├── core/ # Framework code (module system, config, constants)
├── modules/ # Feature module definitions
├── components/ # UI components (organized by feature)
├── hooks/ # Custom React hooks (grouped by module)
├── services/ # Service layer (grouped by module)
├── stores/ # Zustand state management
└── theme/ # MUI theme configuration
# Run Vite dev server
npm run dev
# Run Electron in development
npm run electron:dev
# Lint code
npm run lint
# Build for production
npm run build:macFlowForge uses a plugin-based module system. See docs/ARCHITECTURE.md for module development patterns and src/modules/MODULE_TEMPLATE/ for a starter template.
See CONTRIBUTING.md for guidelines on how to contribute to this project.
MIT © FlowForge Contributors. See LICENSE for details.