A full-stack AI multi-agent orchestration platform with cost controls, secure integrations, and centralized memory.
- Multi-Agent Orchestration: Coordinate OpenAI, Anthropic, xAI, and Perplexity models
- Integration Vault: Connect GitHub, Google Drive, Dropbox, Notion, Zapier, and more
- Cost Governance: Daily/monthly budgets with automatic enforcement
- Memory Layer: Centralized and decentralized memory with keyword search
- Audit Logging: Complete audit trail for all operations
- RBAC: Owner, Admin, Member, Viewer roles
- Rate Limiting: Protection against abuse
- Branch-First Git: Safe repository operations (no direct main pushes)
DATABASE_URL- PostgreSQL connection string (auto-configured by Replit)SESSION_SECRET- Secure random string for session encryptionAPP_ORIGIN- Your app URL (e.g., https://your-app.replit.app)
OPENAI_API_KEY- OpenAI API keyANTHROPIC_API_KEY- Anthropic (Claude) API keyXAI_API_KEY- xAI (Grok) API keyPERPLEXITY_API_KEY- Perplexity API key
GITHUB_TOKEN- GitHub Personal Access Token for repo operationsGOOGLE_DRIVE_CLIENT_ID- Google Drive OAuth client IDGOOGLE_DRIVE_CLIENT_SECRET- Google Drive OAuth secretDROPBOX_ACCESS_TOKEN- Dropbox access tokenNOTION_TOKEN- Notion integration token
# Install dependencies
npm install
# Push database schema
npm run db:push
# Start dev server (backend + frontend)
npm run devThe app will be available at http://localhost:5000
# Build for production
npm run build
# Start production server
npm run start- Add Required Secrets: SESSION_SECRET, APP_ORIGIN
- Add AI Provider Keys: At least one of OPENAI_API_KEY, ANTHROPIC_API_KEY, XAI_API_KEY
- Verify Database: DATABASE_URL is set (Replit auto-configures this)
- Test Auth Flow: Create account, login, logout
- Test Agent Run: Execute at least one agent with stub or real provider
- Configure Budgets: Set daily/monthly budgets via API
- Test Integrations: Connect at least one integration
- Review Audit Logs: Verify logging works via GET /api/audit
- Deploy: Use Replit's "Publish" button to make the app live
POST /api/auth/signup- Create accountPOST /api/auth/login- LoginPOST /api/auth/logout- LogoutGET /api/auth/me- Get current user
GET /api/projects- List projectsPOST /api/projects- Create project
GET /api/integrations- List integrationsPOST /api/integrations/connect- Connect providerPOST /api/integrations/disconnect- Disconnect provider
POST /api/agents/run- Start agent runGET /api/agents/run/:runId- Get run statusGET /api/agents/stream/:runId- Stream run logs (SSE)
POST /api/memory/add- Add memory itemGET /api/memory/search?projectId=X&q=query- Search memory
GET /api/repos- List configured reposPOST /api/repos/commit- Create branch-first commit
GET /api/health- Health check
- Helmet: Security headers
- CORS: Locked to APP_ORIGIN
- Rate Limiting:
- Auth: 5 attempts per 15 min
- API: 100 requests per 15 min
- Agents: 10 runs per minute
- Session Management: HTTP-only cookies
- RBAC: Role-based access control
- Audit Logging: All sensitive operations logged
client/ # React frontend (Vite)
src/
pages/ # All UI pages
components/ # Shared components
server/ # Express backend
auth.ts # Authentication & RBAC
db.ts # Database connection
routes.ts # All API routes
storage.ts # Database operations
middleware/ # Rate limiting, cost control
services/ # Orchestrator, provider adapters
shared/ # Shared types
schema.ts # Drizzle schema & types
The system includes safe stub adapters for all providers. When API keys are not configured:
- Providers return a "not configured" message
- UI remains functional
- Logs indicate missing configuration
- No crashes or errors
To enable real provider calls, add the appropriate API keys to Replit Secrets.
- Set Budgets: Create daily/monthly budgets via API
- Automatic Enforcement: Agent runs blocked when budget exceeded
- Cost Tracking: Each run estimates and tracks costs
- Audit Trail: All cost events logged
Example budget creation:
curl -X POST /api/budgets \
-H "Content-Type: application/json" \
-d '{"orgId":"<org-id>","period":"daily","limitUsd":"10.00"}'- Verify DATABASE_URL is set in Secrets
- Run
npm run db:pushto sync schema
- Add SESSION_SECRET to Replit Secrets (use a long random string)
- Add the appropriate API key to Replit Secrets
- Example: OPENAI_API_KEY for OpenAI
- Check current budget: GET /api/budgets
- Reset or increase budget limits
For issues or questions, check:
- Replit logs for error messages
- Database connection status
- Environment variables in Secrets
- Audit logs via API for operation history
MIT