oCIS Workflows is a full-stack extension for ownCloud Infinite Scale (oCIS) that lets end users define their own automated AI-powered workflows on their files — for example "when I upload a PDF to /Invoices, summarize it with an LLM and tag it" — without writing any code. Users build workflows visually (trigger → LLM step → actions) using a node-graph editor, and the extension runs them on demand, on a schedule, or in reaction to file activity.
It ships as two parts:
backend/— a Go sidecar service that stores workflow definitions, runs them, and talks to oCIS only through its standard public APIs (WebDAV, Graph, the OIDC identity provider, and thessenotification stream) — no NATS dependency, no changes to oCIS core.frontend/— a Vue 3 extension for ownCloud Web providing the workflow builder UI, built with Vue Flow.
LLM calls are made directly by the backend against a configured OpenAI-compatible
LLM_ENDPOINT — there is no external LLM proxy service or dependency.
- Docker and Docker Compose
- pnpm (check
frontend/package.json'spackageManagerfield) - Go (check
backend/go.modfor the required version) - An OpenAI-compatible LLM endpoint reachable from Docker for local testing (e.g.
Ollama on the host — the default
LLM_ENDPOINTindocker-compose.ymlpoints athost.docker.internal:11434).
git clone https://github.com/owncloud/ocis-workflows.git
cd ocis-workflows
# frontend, build in watch mode
cd frontend && pnpm install && pnpm build:w &
# backend, run locally
cd backend && go run ./cmd/workflows serverAdd to /etc/hosts:
127.0.0.1 host.docker.internal
Start the development stack (oCIS + Traefik):
docker compose upOpen https://host.docker.internal:9200 (default login: admin/admin).
# backend
cd backend && go test ./... # unit
go test -tags=e2e ./tests/e2e/... # e2e, requires the stack above running
# frontend
cd frontend && pnpm test:unit # unit
pnpm test:e2e # e2e, requires the stack above runningEvery feature or fix in this repo ships with e2e coverage on both the backend and frontend, driven against the real docker-compose stack rather than mocks.
The stack above defaults to a real LLM endpoint (Ollama), so e2e runs against it depend on a
model being installed and are non-deterministic. For CI-equivalent, deterministic e2e runs
that don't need a real model, start the stack with the test profile instead, which swaps in
a fake LLM fixture:
LLM_ENDPOINT=http://fake-llm:8080/v1 LLM_MODEL=fake-model LLM_API_KEY= docker compose --profile test up -dcd frontend && pnpm build # output in frontend/dist/, deploy via WEB_ASSET_APPS_PATH
cd backend && go build ./cmd/workflows # or docker build -f docker/Dockerfile .- Enterprise Support: https://owncloud.com/contact-us/
- Community discussions: https://github.com/orgs/owncloud/discussions
- Matrix Chat: https://app.element.io/#/room/#owncloud:matrix.org
See SUPPORT.md for details.
We welcome contributions! Please read the Contributing Guidelines and our Code of Conduct before getting started.
- Rebase Early, Rebase Often! We use a rebase workflow. Always rebase on the target branch before submitting a PR.
- Conventional Commits: enforced via
commitlint, see CONTRIBUTING.md. - Signed Commits: All commits must be PGP/GPG signed.
- DCO Sign-off: Every commit must carry a
Signed-off-byline:git commit -s -S -m "...". - GitHub Actions Policy: Workflows may only use actions that are created by GitHub
(
actions/*) or verified in the GitHub Marketplace, pinned to a full commit SHA.
Do not open a public GitHub issue for security vulnerabilities.
See SECURITY.md for how to report one privately.
This project is licensed under the Apache-2.0 license, copyright ownCloud GmbH - A Kiteworks Company and ownCloud contributors.