{"id":47808269,"url":"https://github.com/zloeber/crew-flow-manager","last_synced_at":"2026-04-03T17:56:36.295Z","repository":{"id":325151595,"uuid":"1100035867","full_name":"zloeber/crew-flow-manager","owner":"zloeber","description":"Crew Flow Manager","archived":false,"fork":false,"pushed_at":"2025-11-19T19:13:40.000Z","size":57,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-19T21:05:44.104Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zloeber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-19T18:54:06.000Z","updated_at":"2025-11-19T18:54:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zloeber/crew-flow-manager","commit_stats":null,"previous_names":["zloeber/crew-flow-manager"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/zloeber/crew-flow-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloeber%2Fcrew-flow-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloeber%2Fcrew-flow-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloeber%2Fcrew-flow-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloeber%2Fcrew-flow-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zloeber","download_url":"https://codeload.github.com/zloeber/crew-flow-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zloeber%2Fcrew-flow-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31367744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T17:56:35.553Z","updated_at":"2026-04-03T17:56:36.284Z","avatar_url":"https://github.com/zloeber.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# CrewAI Flow Manager\n\nA full-stack web application for managing, executing, and monitoring CrewAI Flows with real-time updates.\n\n## Features\n\n- 🎯 **Flow Management**: Create, edit, and validate CrewAI Flow YAML configurations\n- 📝 **Monaco Editor**: Advanced YAML editor with syntax highlighting\n- ✅ **Real-time Validation**: Instant validation of Flow configurations\n- ⚡ **On-Demand Execution**: Execute flows instantly with optional model override\n- 📅 **Scheduled Execution**: Schedule flows using cron expressions with APScheduler\n- 🔄 **Real-time Monitoring**: WebSocket-based live updates for execution status\n- 🛠️ **MCP Tools Discovery**: Browse and discover available MCP server tools\n- 🗄️ **PostgreSQL Persistence**: Reliable data storage with SQLAlchemy ORM\n- 🐳 **Docker Support**: Fully containerized with Docker Compose\n- 🤖 **Local LLM Support**: Use local LLMs like Ollama instead of OpenAI\n\n## Tech Stack\n\n### Backend\n- **FastAPI**: Modern Python web framework\n- **SQLAlchemy**: SQL toolkit and ORM\n- **PostgreSQL**: Database\n- **APScheduler**: Job scheduling\n- **CrewAI ~1.0+**: AI agent orchestration\n- **WebSockets**: Real-time communication\n\n### Frontend\n- **React 18**: UI library\n- **TypeScript**: Type-safe JavaScript\n- **Vite**: Fast build tool\n- **Tailwind CSS**: Utility-first CSS\n- **Monaco Editor**: Advanced code editor\n- **Axios**: HTTP client\n- **React Router**: Navigation\n\n## Prerequisites\n\n- Docker and Docker Compose\n- OR:\n  - Python 3.11+\n  - [uv](https://docs.astral.sh/uv/) (fast Python package installer)\n  - Node.js 20+\n  - PostgreSQL 16+\n\n## Quick Start with Docker\n\n1. **Clone the repository**\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd crew-flow-manager\n   ```\n\n2. **Set environment variables**\n   ```bash\n   cp backend/.env.example backend/.env\n   # Edit backend/.env and configure:\n   # - For OpenAI: Add your OPENAI_API_KEY\n   # - For Ollama: Set LLM_PROVIDER=ollama and OLLAMA_BASE_URL\n   # See LOCAL_LLM_SETUP.md for detailed configuration\n   ```\n\n3. **Start the application**\n   ```bash\n   docker-compose up -d\n   ```\n\n4. **Access the application**\n   - Frontend: http://localhost:3000\n   - Backend API: http://localhost:8000\n   - API Documentation: http://localhost:8000/docs\n\n## Manual Setup\n\n### Backend Setup\n\n1. **Navigate to backend directory**\n   ```bash\n   cd backend\n   ```\n\n2. **Install uv (if not already installed)**\n   ```bash\n   curl -LsSf https://astral.sh/uv/install.sh | sh\n   ```\n\n3. **Install dependencies**\n   ```bash\n   uv sync\n   ```\n\n4. **Configure environment**\n   ```bash\n   cp .env.example .env\n   # Edit .env with your configuration\n   ```\n\n5. **Start PostgreSQL**\n   ```bash\n   # Install and start PostgreSQL, then create database\n   createdb crewai_flows\n   ```\n\n6. **Run the backend**\n   ```bash\n   uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000\n   ```\n\n### Frontend Setup\n\n1. **Navigate to frontend directory**\n   ```bash\n   cd frontend\n   ```\n\n2. **Install dependencies**\n   ```bash\n   npm install\n   ```\n\n3. **Configure environment**\n   ```bash\n   # Create .env file\n   echo \"VITE_API_URL=http://localhost:8000\" \u003e .env\n   echo \"VITE_WS_URL=ws://localhost:8000\" \u003e\u003e .env\n   ```\n\n4. **Run the frontend**\n   ```bash\n   npm run dev\n   ```\n\n## Usage Guide\n\n### Creating a Flow\n\n1. Navigate to the **Flows** page\n2. Click **New Flow**\n3. Enter flow details:\n   - **Name**: Unique identifier for the flow\n   - **Description**: Optional description\n   - **YAML Content**: CrewAI Flow configuration\n4. The editor will validate your YAML in real-time\n5. Click **Create** to save\n\nExample Flow YAML:\n```yaml\nname: Research Assistant Flow\ndescription: A flow that researches topics and generates reports\n\nagents:\n  - role: researcher\n    goal: Research the given topic thoroughly\n    backstory: You are an experienced researcher\n\ntasks:\n  - description: Research the topic\n    agent: researcher\n    expected_output: Detailed research findings\n```\n\n### Executing a Flow\n\n1. Go to the **Flows** page\n2. Click the **Play** button on a valid flow\n3. The execution will start immediately\n4. View real-time progress on the **Executions** page\n\n### Scheduling a Flow\n\n1. Navigate to the **Schedules** page\n2. Click **New Schedule**\n3. Configure:\n   - **Flow**: Select the flow to execute\n   - **Name**: Schedule identifier\n   - **Cron Expression**: When to run (e.g., `0 0 * * *` for daily at midnight)\n   - **Model Override**: Optional AI model to use\n   - **Inputs**: Optional JSON inputs\n   - **Active**: Enable/disable the schedule\n4. Click **Create**\n\n### Cron Expression Examples\n\n- `0 0 * * *` - Daily at midnight\n- `0 */6 * * *` - Every 6 hours\n- `30 9 * * 1-5` - Weekdays at 9:30 AM\n- `0 12 1 * *` - First day of month at noon\n\n### Monitoring Executions\n\nThe **Executions** page shows all flow runs with:\n- Real-time status updates via WebSocket\n- Execution logs\n- Input/output data\n- Error messages (if failed)\n\n### MCP Tools\n\nThe **MCP Tools** page displays available tools from MCP servers that can be used in your flows.\n\n## Using Local LLMs (Ollama)\n\nCrewAI Flow Manager supports local LLM providers like Ollama, allowing you to run AI models locally without external API calls.\n\n### Quick Setup\n\n1. **Install Ollama**\n   ```bash\n   curl -fsSL https://ollama.ai/install.sh | sh\n   ```\n\n2. **Pull a model**\n   ```bash\n   ollama pull llama2\n   ```\n\n3. **Configure backend/.env**\n   ```bash\n   LLM_PROVIDER=ollama\n   OLLAMA_BASE_URL=http://localhost:11434\n   LLM_MODEL=llama2\n   OPENAI_API_KEY=ollama\n   ```\n\n4. **Use in the UI**\n   - When executing a flow, select \"Ollama (Local)\" as the LLM Provider\n   - Enter `http://localhost:11434` as the base URL\n   - Specify the model name (e.g., `llama2`, `mistral`)\n\n### Supported Providers\n\n- **OpenAI** - Standard OpenAI API (default)\n- **Ollama** - Local LLM runtime\n- **Custom** - Any OpenAI-compatible endpoint\n\nFor detailed setup instructions and troubleshooting, see [LOCAL_LLM_SETUP.md](LOCAL_LLM_SETUP.md).\n\n## API Documentation\n\nInteractive API documentation is available at:\n- Swagger UI: http://localhost:8000/docs\n- ReDoc: http://localhost:8000/redoc\n\n### Main Endpoints\n\n#### Flows\n- `GET /api/flows` - List all flows\n- `POST /api/flows` - Create a flow\n- `GET /api/flows/{id}` - Get flow details\n- `PUT /api/flows/{id}` - Update a flow\n- `DELETE /api/flows/{id}` - Delete a flow\n- `POST /api/flows/validate` - Validate YAML\n\n#### Executions\n- `GET /api/executions` - List executions\n- `POST /api/executions` - Start execution\n- `GET /api/executions/{id}` - Get execution details\n- `DELETE /api/executions/{id}` - Delete execution\n\n#### Schedules\n- `GET /api/schedules` - List schedules\n- `POST /api/schedules` - Create schedule\n- `PUT /api/schedules/{id}` - Update schedule\n- `DELETE /api/schedules/{id}` - Delete schedule\n\n#### MCP Tools\n- `GET /api/mcp-tools` - List available tools\n\n#### WebSocket\n- `WS /ws/updates` - Real-time updates\n\n## Architecture\n\n```\ncrew-flow-manager/\n├── backend/\n│   ├── app/\n│   │   ├── api/          # API endpoints\n│   │   ├── core/         # Configuration\n│   │   ├── db/           # Database connection\n│   │   ├── models/       # SQLAlchemy models\n│   │   ├── schemas/      # Pydantic schemas\n│   │   ├── services/     # Business logic\n│   │   └── main.py       # FastAPI app\n│   ├── Dockerfile\n│   └── requirements.txt\n├── frontend/\n│   ├── src/\n│   │   ├── components/   # React components\n│   │   ├── pages/        # Page components\n│   │   ├── services/     # API \u0026 WebSocket\n│   │   ├── types/        # TypeScript types\n│   │   ├── App.tsx       # Main component\n│   │   └── main.tsx      # Entry point\n│   ├── Dockerfile\n│   └── package.json\n└── docker-compose.yml\n```\n\n## Database Schema\n\n- **flows**: Flow definitions and YAML content\n- **executions**: Flow execution records and results\n- **schedules**: Scheduled job configurations\n- **apscheduler_jobs**: APScheduler job store\n\n## Development\n\n### Backend Development\n\n```bash\ncd backend\nsource venv/bin/activate\nuvicorn app.main:app --reload\n```\n\n### Frontend Development\n\n```bash\ncd frontend\nnpm run dev\n```\n\n### Code Style\n\nBackend:\n```bash\n# Format code\nblack app/\n# Check types\nmypy app/\n```\n\nFrontend:\n```bash\n# Lint\nnpm run lint\n# Type check\nnpx tsc --noEmit\n```\n\n## Troubleshooting\n\n### Database Connection Issues\n- Ensure PostgreSQL is running\n- Check `DATABASE_URL` in `.env`\n- Verify database exists: `psql -l`\n\n### Port Conflicts\n- Change ports in `docker-compose.yml` or `.env`\n- Check if ports 3000, 8000, 5432 are available\n\n### WebSocket Connection Failed\n- Ensure backend is running\n- Check CORS settings in `backend/app/core/config.py`\n- Verify `VITE_WS_URL` in frontend `.env`\n\n### Flow Validation Errors\n- Check YAML syntax\n- Ensure required fields are present\n- Review error messages in UI\n\n## Production Deployment\n\n1. **Update environment variables**\n   - Set strong `SECRET_KEY`\n   - Configure production `DATABASE_URL`\n   - Add real `OPENAI_API_KEY`\n   - Update `CORS_ORIGINS`\n\n2. **Build production images**\n   ```bash\n   docker-compose -f docker-compose.prod.yml up -d\n   ```\n\n3. **Use HTTPS**\n   - Configure reverse proxy (nginx/traefik)\n   - Add SSL certificates\n\n4. **Database backups**\n   ```bash\n   docker exec crewai-postgres pg_dump -U crewai crewai_flows \u003e backup.sql\n   ```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n## License\n\nMIT License - see LICENSE file for details\n\n## Support\n\nFor issues and questions:\n- GitHub Issues: [repository-url]/issues\n- Documentation: [repository-url]/wiki\n\n## Roadmap\n\n- [x] Local LLM support (Ollama and custom endpoints)\n- [ ] User authentication and authorization\n- [ ] Flow templates library\n- [ ] Enhanced execution logs with streaming\n- [ ] Flow version history\n- [ ] Performance metrics and analytics\n- [ ] Multi-language support\n- [ ] Export/import flows\n- [ ] Real MCP server integration\n- [ ] Advanced cron expression builder\n- [ ] Email notifications for execution status\n\n## Credits\n\nBuilt with:\n- [CrewAI](https://github.com/joaomdmoura/crewai)\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [React](https://react.dev/)\n- [Tailwind CSS](https://tailwindcss.com/)\n- [Monaco Editor](https://microsoft.github.io/monaco-editor/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzloeber%2Fcrew-flow-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzloeber%2Fcrew-flow-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzloeber%2Fcrew-flow-manager/lists"}