Docwize Forge
Docwize Forge lets users upload custom code that runs as a workflow node — a Forge Function. A function receives the workflow document and its files, runs users' own logic, and returns a result that decides which branch the workflow takes next.
Access via New > Workflow Setup > Forge.
Docwize Forge overview
Usage quotas
The top of the page shows two monthly quota meters:
| Meter | What it tracks |
|---|---|
| Runs this month | Number of function invocations used this month against the plan's allowance (e.g. 0 / 10,000). |
| Compute this month | GB-seconds of compute used this month against the plan's allowance (e.g. 0.0 GB-s / 10,000.0 GB-s). |
Both meters reset on the date shown next to Resets.
Starting from a template
The Start from a template section offers four downloadable starters. Each download is a working function that can be run locally before uploading:
| Template | Description |
|---|---|
| Python 3.12 | Typed Event/Result SDK in one vendored file. The quickest way to start, and the right choice unless a system dependency is needed. |
| Node 20 | Async/await handler with the same Event/Result shape as the Python starter. Dependencies are vendored into the bundle. |
| Go | Compiles to a static binary with no dependencies, giving the fastest cold start of the three. Standard library only. |
| Container (any language) | Bring your own image: any base, any language, any system package. The program reads JSON on stdin and writes JSON on stdout — no SDK required. The included example is Bash using jq and poppler, which the zip-based runtimes cannot provide. |
Uploading a function
Once a function is written, click Upload bundle to open the upload dialog:
Select a zip containing
docwize.forge.jsonat its root. Everything about the function — runtime, entry point, output routes and configuration keys — is read from that manifest.
The dialog accepts a .zip dropped onto it or chosen via a file picker, and includes a The manifest link with more detail on the docwize.forge.json format.
Docs and Quick start buttons next to the upload control point to further guidance on writing and packaging a function.
Managing an uploaded function
Each uploaded function appears as a card below the templates, showing its runtime, status (e.g. ACTIVE), current version (e.g. v4 in use), slug, route count, run count for the last 30 days, and the timestamp of its last run. A trash icon on the card archives the function.
Clicking a function card opens its detail dialog, with two tabs:
| Tab | Contents |
|---|---|
| Versions | Every uploaded version of the function, each showing its status, upload timestamp, bundle size, and a short commit-style hash. The active version is marked in use; older versions show an Activate button to roll back to that version. |
| Runs | Recent invocations of the function, each showing a status badge (e.g. COMPLETED), the output route it matched, duration in milliseconds, timestamp, the workflow instance it ran in (e.g. Workflow #931), and a line count for its output log. |
Forge function detail — Runs tab
Using a Forge Function in a workflow
Once uploaded, a function becomes available as a node in the Forge Functions category of the workflow node palette. See Workflow Nodes.
Related configuration
- Workflow Nodes — where an uploaded Forge Function is used as a workflow step
- Building Workflow Templates — the canvas where nodes are assembled into templates