{"id":50369190,"url":"https://github.com/daisy-workflow/daisy-engine","last_synced_at":"2026-06-15T21:00:48.652Z","repository":{"id":355555655,"uuid":"1228013410","full_name":"daisy-workflow/daisy-engine","owner":"daisy-workflow","description":"AI orchestration platform","archived":false,"fork":false,"pushed_at":"2026-05-27T15:48:24.000Z","size":7501,"stargazers_count":81,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T17:21:51.764Z","etag":null,"topics":["ai-agents","ai-automation","ai-tools","ai-workflow","automation","dag","workflow"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daisy-workflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2026-05-03T13:30:23.000Z","updated_at":"2026-05-27T15:48:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/daisy-workflow/daisy-engine","commit_stats":null,"previous_names":["vivekg13186/dag-engine","vivekg13186/daisy-workflow","daisy-workflow/daisy-workflow","daisy-workflow/daisy-engine"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/daisy-workflow/daisy-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daisy-workflow%2Fdaisy-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daisy-workflow%2Fdaisy-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daisy-workflow%2Fdaisy-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daisy-workflow%2Fdaisy-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daisy-workflow","download_url":"https://codeload.github.com/daisy-workflow/daisy-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daisy-workflow%2Fdaisy-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34379915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai-agents","ai-automation","ai-tools","ai-workflow","automation","dag","workflow"],"created_at":"2026-05-30T06:00:34.073Z","updated_at":"2026-06-15T21:00:48.646Z","avatar_url":"https://github.com/daisy-workflow.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003e [!NOTE]\n\u003e Transforming Daisy into a more AI-centric workflow. A new release is currently in progress.\n\nDaisy AI Orchestrator is an AI orchestration platform built around a visual editor and a typed DSL. The runtime executes directed acyclic graphs (DAGs) of plugin actions, supports parallel execution with retries and batch fan-out, evaluates FEEL expressions in user-supplied placeholders, and protects credentials with KMS envelope encryption. The platform exposes both in-process and HTTP-transport plugins, supports OIDC authentication, and emits audit, observability, and rate-limit signals suitable for production deployments.\n\nSee the [Wiki](https://github.com/vivekg13186/Daisy-workflow/wiki) for full documentation.\n\n# Architecture \n \n ![arch](daisy-arch1.jpg)\n\n## Quick start (Docker)\n\nThe fastest way to try Daisy is to pull the pre-built images from Docker Hub and bring the whole stack up with one command.\n\n### Prerequisites\n\n- Docker 24+ and Docker Compose v2 (bundled with Docker Desktop).\n- Roughly 1 GB of free RAM for Postgres + Redis + backend + frontend.\n- Ports `5173`, `3000`, `5432`, and `6379` free on the host.\n\n### 1. Bring up the stack\n\nClone the repo (you only need the compose files — the rest comes from Docker Hub):\n\n```bash\ngit clone https://github.com/vivekg13186/Daisy-workflow.git\ncd Daisy-workflow\n```\n\nPull and start everything:\n\n```bash\nBACKEND_IMAGE=vivek13186/daisy-workflow-backend:latest \\\nFRONTEND_IMAGE=vivek13186/daisy-workflow-frontend:latest \\\n  docker compose --profile full up -d\n```\n\nCompose brings up four containers:\n\n| Service        | Image                                       | Host port |\n|----------------|---------------------------------------------|-----------|\n| `dag_postgres` | `postgres:16-alpine`                        | 5432      |\n| `dag_redis`    | `redis:7-alpine`                            | 6379      |\n| `dag_backend`  | `vivek13186/daisy-workflow-backend:latest`       | 3000      |\n| `dag_frontend` | `vivek13186/daisy-workflow-frontend:latest`      | 5173      |\n\nThe backend waits for Postgres + Redis to report healthy before starting. First boot takes ~20 seconds.\n\nFor the **dev** images (watch mode, debugger port exposed, looser logging) swap the tag:\n\n```bash\nBACKEND_IMAGE=vivek13186/daisy-workflow-backend:dev \\\nFRONTEND_IMAGE=vivek13186/daisy-workflow-frontend:dev \\\n  docker compose --profile full up -d\n```\n\nIf you omit the `BACKEND_IMAGE` / `FRONTEND_IMAGE` env vars, compose builds the images locally from the `Dockerfile`s in `./backend` and `./frontend`.\n\n### 2. Apply database migrations\n\nThe schema lives in `backend/migrations/`. Run it once against the freshly-started Postgres:\n\n```bash\ndocker compose exec backend npm run migrate\n```\n\nMigrations are idempotent; rerun any time after `git pull` to pick up new schema.\n\n### 3. Create the first admin user\n\n```bash\ndocker compose exec backend npm run create-admin\n```\n\nThe CLI prompts for email + password and creates the user in the default workspace. Rerun to add more admins.\n\n### 4. Open the UI\n\nPoint a browser at:\n\n\u003e **http://localhost:5173**\n\nSign in with the credentials you just created. You'll land on the Home page with sidebar entries for Workflows, Triggers, Agents, Configurations, Instances, and Plugins.\n\nThe backend API and WebSocket channel live at:\n\n\u003e **http://localhost:3000** — REST + `/ws` for live execution updates.\n\n### 5. Try a sample workflow\n\nThe repo ships sample flows under `backend/samples/`. Import one to make sure the engine is wired correctly:\n\n1. UI → **+ New flow** → toolbar **Import** (upload icon) → pick `backend/samples/hello-world.json`.\n2. Click **Save**, then **Run** (▶).\n3. The execution opens in the read-only Instance Viewer with the graph coloured by per-node status. You should see every node land on **success** within a second.\n\n### Optional features\n\n| Feature                            | How to enable                                                       |\n|------------------------------------|----------------------------------------------------------------------|\n| **AI assistant + agents**          | Set `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` in `.env` before `up -d`. The Prompt tab, agent plugin, *Diagnose this failure*, and the Plugin generator all become available. |\n| **External plugin containers**     | `docker compose -f docker-compose.yml -f docker-compose.plugins.yml --profile full up -d`. |\n| **TLS edge (nginx / Caddy)**       | `docker compose -f docker-compose.yml -f docker-compose.tls.yml --profile full up -d`. See [TLS edge](https://github.com/vivekg13186/Daisy-workflow/wiki/TLS-edge). |\n| **Scheduled backups**              | `docker compose -f docker-compose.yml -f docker-compose.backup.yml --profile full up -d`. |\n| **Observability (Grafana + Tempo)**| `docker compose -f observability/docker-compose.yml up -d`. |\n\n### Day-to-day commands\n\n```bash\n# Status\ndocker compose ps\n\n# Tail logs (Ctrl+C to stop tailing)\ndocker compose logs -f backend frontend\n\n# Restart after a config change\ndocker compose restart backend\n\n# Pull newer images and recreate\ndocker compose pull\nBACKEND_IMAGE=vivek13186/daisy-workflow-backend:latest \\\nFRONTEND_IMAGE=vivek13186/daisy-workflow-frontend:latest \\\n  docker compose --profile full up -d\n\n# Shut everything down (volumes preserved)\ndocker compose down\n\n# Wipe Postgres volume (start over from scratch)\ndocker compose down -v\n```\n\n### Troubleshooting\n\n- **`http://localhost:5173` shows a blank page** — frontend container is still starting. Check `docker compose logs frontend`. The nginx healthcheck takes ~5 s after first boot.\n- **`401` from `/api/...`** — you're not signed in. Visit `/login` directly or hard-refresh.\n- **`AI button is hidden`** — neither `ANTHROPIC_API_KEY` nor `OPENAI_API_KEY` is set. Visit `http://localhost:3000/ai/status` to see what the backend received.\n- **`npm run migrate` fails with `ECONNREFUSED`** — Postgres isn't healthy yet. Wait a few seconds and retry.\n- **Want to inspect the DB?** `docker compose exec postgres psql -U dag -d dag_engine`.\n\nFor a local-dev setup (no containers, `npm run dev` against host Postgres) see [Getting started](https://github.com/vivekg13186/Daisy-workflow/wiki/Getting-started) on the wiki.\n\n## Screenshots\n\n### Home page\n\n![HomePage](./screenshots/workflows.png)\n\n### Flow designer\n\n![Flow designer](./screenshots/workflow_designer.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaisy-workflow%2Fdaisy-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaisy-workflow%2Fdaisy-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaisy-workflow%2Fdaisy-engine/lists"}