go-bpm RU

go-bpm modeler

A BPMN and DMN editor for go-bpm

A desktop app for Linux, Windows and macOS. The palette contains supported elements, properties use the generator's format, and diagrams follow its validation rules. Save *.bpmn and *.dmn files in your service's process/ directory.

Source code on GitHub

Loading available builds…

Installation

Linux

Choose x86-64 for conventional PCs or ARM64 for Raspberry Pi 4/5, ARM laptops and Linux virtual machines on Apple Silicon. Check with uname -m. Extract the archive and run go-bpm-modeler. GTK 3 and WebKitGTK 4.1 are required, available on Ubuntu 22.04+, Debian 12+ and Fedora. Also tested on Astra Linux Special Edition 1.8.1.6.

sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0
tar -xzf go-bpm-modeler-linux-amd64.tar.gz   # or linux-arm64
./go-bpm-modeler

Windows

Extract the archive and run go-bpm-modeler.exe. WebView2 is required on Windows 10 and 11. Builds are unsigned: in SmartScreen, choose “More info” → “Run anyway”.

macOS

Choose Apple Silicon for M-series processors or Intel for Intel Macs. Extract the archive and move go-bpm-modeler.app to Applications. Builds are unsigned: allow the first launch in System Settings → Privacy & Security → Open Anyway, or remove quarantine:

xattr -dr com.apple.quarantine /Applications/go-bpm-modeler.app

Verify checksums from the build's SHA256SUMS file: sha256sum -c SHA256SUMS --ignore-missing.

See the editor

The order approval example: DMN, a user task with timer escalation, notification and payment waiting. Screenshots show the Russian interface.

Built for the engine

Supported elements only

The palette and replacement menu exclude unsupported elements. Boundary events attach only where supported, and branching uses gateways.

Errors before generation

The linter applies generator rules: missing job types, invalid timers and illegal branches appear directly on the diagram.

Engine properties

Configure job types, retries, scripts, DMN results, call activities, user assignments and forms, message keys, timers and multi-instance.

Files in your repository

BPMN 2.0 and DMN 1.3 files stay next to service code in Git. Writes are atomic.

Work with an AI agent

The built-in MCP server lets Claude Code, Cursor and other agents inspect the diagram and propose changes. You approve each edit.

Main tools

Toolbar
Open a workspace, create BPMN or DMN, save with Ctrl+S, undo, redo, copy, cut, paste, zoom, color elements and open documentation.
File list
All *.bpmn and *.dmn files in the workspace and its subdirectories. Drag the panel edge to resize; double-click to reset.
Tabs
Open several files at once. A dot marks unsaved changes; closing prompts you before discarding them.
Palette
Start and end events, timers, message waits, gateways, tasks, service tasks, scripts, user tasks, AI tasks, subprocesses, pools and groups.
Element menu
Add the next element, connect, replace the type with the wrench menu, or delete.
Properties
Set name and ID, then the engine properties for the selected element. The process ID becomes a Go package and element IDs become function names.
Linter
Hover over an error or warning marker for its explanation. Click the counter below the canvas to toggle markers.

How to use it

  1. Open a folder. Select your service's process/ directory. The modeler lists its files and remembers the workspace.
  2. Create a diagram. Choose BPMN or DMN and a filename; use a slash for subdirectories, such as orders/approval.
  3. Draw the process. Use the palette and element menus. Tasks have one outgoing sequence flow; use gateways for branching.
  4. Set IDs and properties. Prefer meaningful IDs such as CheckOrder to generated random identifiers.
  5. Fix linter errors. Errors block generation. Review warnings as well.
  6. Save and generate. Save, then run go generate ./... in the service. See the generator guide.

Linter rules

Errors prevent generation. Warnings indicate a potentially unintended process.

RuleChecks
supported-elementsSupported tasks, gateways, events and loops only; no inclusive or event-based gateways, send/manual tasks, throw events, event subprocesses, nested subprocesses, standard loops or non-interrupting boundary events.
single-start-eventExactly one plain start event in a process or subprocess.
boundary-eventsTimer and error events attach only to supported activities; boundary timers cannot attach to multi-instance activities.
branchesTasks and events have one outgoing flow; conditions belong to exclusive gateway outputs.
exclusive-defaultA missing default branch is a warning: an instance fails if no condition matches.
required-propertiesService task job types, scripts, decision/result references, called processes, constant message names and AI prompt/result settings.
timersISO 8601 durations without months or years, RFC 3339 dates with a time zone, or variable references. No timeCycle.
multi-instanceSequential only; a positive integer cardinality or a completion condition is required.
assignmentsAssignees, candidates and correlation keys use literal values or variable references rather than arbitrary expressions.
process-idsUnique IDs that do not collide with generated package names.
referencesWarn about missing DMN decisions or called processes in the workspace.

DMN decision tables

  • A non-empty decision table is required; no literal expressions or dependencies via requiredDecision.
  • No PRIORITY or OUTPUT ORDER; aggregating COLLECT requires a single output.
  • Outputs must exist and multi-output names must map to distinct Go fields.
  • Tested inputs need expressions, and comma-separated tests cannot contain empty entries.
  • The linter warns about unsupported types, FEEL functions and unused BKM, knowledge source or decision service elements.

The generator checks DataModel fields and expression compilation. See BPMN and DMN for engine limitations.

MCP server

Model together with an AI agent

Claude Code, Cursor and other MCP clients can inspect open diagrams, unsaved changes and selected elements, explain the process and propose edits. You approve changes in the modeler and decide when to save.

  1. Click the AI agent toolbar button and enable the MCP server.
  2. Copy the command from the dialog. For Claude Code:
    claude mcp add --transport http go-bpm-modeler http://127.0.0.1:39190/mcp \
      --header "Authorization: Bearer <token from the dialog>"
  3. Ask the agent to review approval logic, add a timer escalation or explain a selected decision table.

The server is off by default, listens only on the local machine, requires a token and is restricted to the workspace. Changes and new files require your approval.

Setup, examples and security