Thanks for your interest in contributing to Prometheus! Here's how to get started.
# Clone the repo
git clone https://github.com/davidmoserai/prometheus.git
cd prometheus
# Install dependencies
npm install
# Run in browser (no Electron needed)
npm run dev:web
# Run as desktop app (from Terminal.app, not VS Code terminal)
npm run dev
# Build the desktop app
npm run build
npm run packsrc/
├── main/ # Electron main process
│ ├── index.ts # App entry, IPC handlers
│ ├── store.ts # JSON persistence layer
│ ├── types.ts # Shared type definitions
│ └── agent-manager.ts # LLM integration (streaming, tool calling, caching)
├── preload/ # Secure IPC bridge
│ └── index.ts
└── renderer/ # React frontend
└── src/
├── components/
│ ├── ui/ # Shared primitives (Card, Button, Input, etc.)
│ ├── layout/ # Sidebar, navigation
│ ├── dashboard/ # Overview stats
│ ├── employees/ # Employee management
│ ├── chat/ # Conversation interface
│ ├── tasks/ # Inter-agent task delegation
│ ├── knowledge/ # Document management
│ └── settings/ # Provider configuration
├── stores/ # Zustand state management
└── lib/ # Utilities, mock API
npm run dev:web— runs in the browser with a mock API. Best for UI work.npm run dev— runs the full Electron app. Must be run from Terminal.app, not VS Code's integrated terminal (theELECTRON_RUN_AS_NODEenv var breaks Electron).
Tailwind spacing utilities (p-7, mb-5, gap-6) don't render at correct sizes in this project. Use inline style={{ }} for all spacing (padding, margin, gap). Keep Tailwind for colors, borders, typography, flex/grid, transitions, and rounded corners.
- Dark-only — no light mode
- Colors: Use semantic tokens (
bg-bg-primary,bg-bg-elevated,border-border-default, etc.) defined inglobals.css - Spacing: Inline styles — 48px page padding, 28px card padding, 24px grid gaps
- Cards/surfaces:
bg-bg-elevatedwithborder-border-default - Dropdowns: Solid
backgroundColorvia inline style (not Tailwind class)
- Add to
DEFAULT_PROVIDERSinsrc/main/types.ts - Add to mock data in
src/renderer/src/lib/mock-api.ts - Add to
PROVIDER_INFOinsrc/renderer/src/components/settings/settings-page.tsx - If the API format differs from OpenAI, add a new method in
src/main/agent-manager.ts
- Create component in
src/renderer/src/components/{page}/ - Add route case in
src/renderer/src/App.tsx - Add nav item in
src/renderer/src/components/layout/sidebar.tsx - Add view type to
activeViewinsrc/renderer/src/stores/app-store.ts
- Fork the repo and create your branch from
main - Make your changes
- Test in both web preview (
npm run dev:web) and desktop app (npm run dev) - Run
npm run typecheckto verify no TypeScript errors - Write a clear PR description explaining what and why
- Submit the PR
- TypeScript strict mode — proper types, avoid
any - React function components only
- Concise comments above logical blocks, not every line
- Keep components under 200 lines
- No inline styles for colors/borders (use Tailwind), but yes for spacing (see known issue above)
- Use the GitHub issue templates (Bug Report or Feature Request)
- Include screenshots for UI issues
- Include your OS, Electron version, and provider being used
By contributing, you agree that your contributions will be licensed under the MIT License.