---
{
  "n": 4,
  "title": "Workflows",
  "abstract": "The visual workflow engine, run inside the journal: journal events start workflows, and workflows write back.",
  "refs": [],
  "seen": [
    "user"
  ],
  "data": {
    "enabled": true,
    "settings": {
      "ports": {
        "web": 8440,
        "realtime": 8441
      }
    },
    "token": "78c110336875147f3286073a7fc5a099",
    "source": "https://github.com/jessegall/workflows",
    "revision": "",
    "commit": "64a063e3390cc7f0ce2b86f1ccf3966d39bedc56",
    "version": "0.98.131",
    "linked": false,
    "manifest": {
      "name": "workflows",
      "title": "Workflows",
      "description": "The visual workflow engine, run inside the journal: journal events start workflows, and workflows write back.",
      "journal": "2.13.0",
      "requires": {
        "php": {
          "check": "php -r \"exit(version_compare(PHP_VERSION, '8.5', '>=') && extension_loaded('pdo_sqlite') && extension_loaded('dom') ? 0 : 1);\"",
          "hint": "PHP 8.5 or newer with pdo_sqlite and dom (brew install php)"
        },
        "composer": {
          "check": "composer --version",
          "hint": "Composer 2 (brew install composer)"
        }
      },
      "env": {
        "APP_URL": "http://127.0.0.1:{ports.web}",
        "DB_CONNECTION": "sqlite",
        "DB_DATABASE": "{data}/workflows.sqlite",
        "QUEUE_CONNECTION": "database",
        "SESSION_DRIVER": "file",
        "CACHE_STORE": "file",
        "LARAVEL_STORAGE_PATH": "{data}/storage",
        "WORKFLOWS_PORT_OFFSET": "0",
        "WORKFLOWS_BROADCAST_PORT": "{ports.realtime}"
      },
      "setup": [
        {
          "name": "storage",
          "run": "sh .journal-plugin/bin/prepare.sh",
          "cwd": ""
        },
        {
          "name": "composer",
          "run": "composer install --no-interaction --no-dev --prefer-dist --no-scripts",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "package",
          "run": "composer update jessegall/workflows --with-all-dependencies --no-interaction --no-dev --prefer-dist --no-scripts",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "key",
          "run": "php artisan journal:key",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "migrate",
          "run": "php artisan migrate --force",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "install",
          "run": "php artisan workflows:install --no-migrate --mcp=none --oauth=no --no-interaction",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "assets",
          "run": "php artisan workflows:assets",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "bundle",
          "run": "sh ../bin/bundle.sh",
          "cwd": ".journal-plugin/host"
        },
        {
          "name": "integration",
          "run": "php artisan journal:integration",
          "cwd": ".journal-plugin/host"
        }
      ],
      "services": {
        "web": {
          "run": "php artisan serve --host=127.0.0.1 --port={port} --no-reload",
          "cwd": ".journal-plugin/host",
          "port": "auto",
          "env": {
            "PHP_CLI_SERVER_WORKERS": "6"
          },
          "ready": {
            "path": "/up"
          },
          "restart": "on-failure"
        },
        "queue": {
          "run": "php artisan queue:work --queue=workflows,workflows-agent,default --sleep=1",
          "cwd": ".journal-plugin/host",
          "restart": "always"
        },
        "realtime": {
          "run": "php artisan workflows:broadcast --host=127.0.0.1 --port={port}",
          "cwd": ".journal-plugin/host",
          "port": "auto",
          "restart": "always"
        },
        "schedule": {
          "run": "php artisan schedule:work",
          "cwd": ".journal-plugin/host",
          "restart": "always"
        },
        "agent-messages": {
          "run": "php artisan workflows:agent-messages",
          "cwd": ".journal-plugin/host",
          "restart": "always"
        }
      },
      "on": {
        "todo.created": {
          "post": "http://127.0.0.1:{ports.web}/journal/events"
        },
        "todo.completed": {
          "post": "http://127.0.0.1:{ports.web}/journal/events"
        },
        "message.created": {
          "post": "http://127.0.0.1:{ports.web}/journal/events"
        }
      },
      "pages": [
        {
          "name": "workflows",
          "title": "Workflows",
          "icon": "flow",
          "service": "web",
          "path": "/workflows",
          "status": "/workflows/api/engine/health"
        }
      ],
      "chat": [],
      "settings": {}
    },
    "member": "owner"
  },
  "created": 1789980009.136374,
  "updated": 1789980104.292585,
  "deleted": 0.0,
  "completed": 1789980104.292578,
  "outcome": "removed from the viewer",
  "type": "plugin"
}
---

