Skip to content
Use Fungi

Visual workflows on Cloudflare Workflows with Trellis

Wire typed App methods into a workflow, publish an immutable version, and run it by hand, on a schedule or on an App event such as a Git push.

Use Trellis when several App calls should form one repeatable workflow. Drag methods onto a canvas, connect their typed ports, and publish the graph before running it. On your own Oyster, runs execute on Cloudflare Workflows and call the same App methods your agents use.

You can follow each step’s state, output, duration and cost rather than guessing whether an accepted request finished.

Follow Run your own Oyster to deploy Oyster with Workflows enabled and install its starter Apps:

TERMINAL
npx oyster install-apps

Sign in at $OYSTER_URL/login with your owner key, then open Trellis from Tourtois. Install and approve access to the Apps your workflow will call. Publishing a graph does not grant those permissions.

Open Templates for an existing shape:

  • Bonsai checks runs a test command on a Change and reports its result.
  • Build on merge builds, verifies and installs an accepted App revision.
  • Review a result adds a human decision.
  • Storyboard generates panels through Prints, with a review per beat.
  • Storyboard + Save to git also saves the reviewed output in a repository.

For a graph of your own, drag an App method from the Palette onto the Canvas. Use the Inspector to set its inputs. Connect an output port to the next method’s compatible input, or supply a literal value.

Trellis validates as you edit. Resolve the reported issues until the graph is Valid. A valid graph has a usable shape; it is not proof that an external service is available or that a future call will be authorized.

Use reviews, waits, conditions, repeats and maps for control flow. A review pauses that part of the run until a person approves or rejects it. An agent cannot answer its own workflow review.

A Code node runs JavaScript in a sandbox with a time limit. Use it to transform the data wired into the node, not to bypass App permissions. Its data capability is env.INPUT.read({}); App calls and network access are not available inside that transform.

For shell work, call a Shed method as an App step. For Git steps, select the repository access the step actually needs. A graph’s declaration of Git access does not itself authorize a push.

Choose Publish once the graph is valid. Trellis writes workflows/<id>.json to the installation’s trellis Git repository and tags the version <id>@v<n>.

Drafts never run. A run records the exact published version it started from. Later edits create a draft rather than changing an already published version. To edit an old version, select it in the version menu and choose Restore as draft, then publish the new version when ready.

Start with Run and supply the published graph’s inputs. Inspect that manual run before arming automation.

Use Triggers to configure the published version:

Start Use
Manual Run the selected published version with explicit inputs.
Schedule Arm a published schedule for repeated work.
App event Arm an event such as a Bonsai push or merge.

Webhook triggers are marked Webhook · unavailable and cannot be armed in Trellis.

A Git push enters through Bonsai’s App events, not by giving the workflow an unrestricted provider credential. For the repository side, see Git hosting for many AI agents.

Arming a trigger and publishing a graph are separate actions. Oyster checks the caller’s permissions again before each step; a permission that was once approved may no longer be usable.

Open Runs to inspect the selected run. Check each step’s state and output, duration and cost. Image and video results have previews. A failed or refused step is not a successful result.

Answer review steps there as a person. An agent can inspect a run through runStatus, but answerReview remains person-only. You can also cancel a run through Trellis’s ordinary run controls.

The separate Schedules view shows this installation’s Workflow registrations and the visible Agents’ reminders and Session Loops. It does not require choosing a workflow or granting Git access. Arm a workflow’s published trigger in Triggers, not by treating that overview as a new scheduler.

Trellis stores the fungi.workflow/v1 graph contract. Braid owns its validation and compilation: validate(unknown, catalog) decodes the definition and returns typed issues, while compile produces an installation-bound, topologically ordered plan with a SHA-256 digest or returns issues.

Use that contract when importing or generating a graph instead of writing a second JSON or DAG validator. Compilation grants no authority; the host still admits each App call. Workflows Wire supplies the shared run IDs and reply schemas, not execution or permission policy.

Agents can discover Trellis’s catalog, saveDraft, publishWorkflow, runWorkflow and run-inspection methods through Oyster’s MCP endpoint. For setup and limits, see the Trellis README.