Documentation
¶
Overview ¶
Package atlas is a blazing-fast, durable BPMN 2.x workflow engine.
Atlas compiles BPMN models into a flat, integer-indexed execution graph, records every state transition as an append-only event in a write-ahead log, and materializes live state in an embedded key-value store. See the documents in docs/ for the architecture, design decisions, and roadmap.
This is the module root. Implementation packages live in subdirectories and will be added as the project develops; see ROADMAP.md for status.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package api is the single-binary server surface for Atlas: it embeds one engine.Processor behind an HTTP API and serves an embedded web UI, so a single self-contained binary can deploy BPMN models, run instances, and (as the UI grows) view them in a browser.
|
Package api is the single-binary server surface for Atlas: it embeds one engine.Processor behind an HTTP API and serves an embedded web UI, so a single self-contained binary can deploy BPMN models, run instances, and (as the UI grows) view them in a browser. |
|
collab
Package collab implements the first slice of ADR-0140: live collaborative modeling sessions.
|
Package collab implements the first slice of ADR-0140: live collaborative modeling sessions. |
|
formgen
Package formgen generates a form from a description and from the process it belongs to (ADR-0260).
|
Package formgen generates a form from a description and from the process it belongs to (ADR-0260). |
|
httpapi
Package httpapi holds the primitives every Atlas HTTP handler is written against: how a response is written, who the caller is, and where the request came from.
|
Package httpapi holds the primitives every Atlas HTTP handler is written against: how a response is written, who the caller is, and where the request came from. |
|
infomodel
Package infomodel holds Atlas's process information model: a UML class-diagram subset that gives BPMN's data objects a type they can share across processes (ADR-0230).
|
Package infomodel holds Atlas's process information model: a UML class-diagram subset that gives BPMN's data objects a type they can share across processes (ADR-0230). |
|
layout
Package layout generates BPMN diagram interchange (BPMN-DI) for models that carry none, and regenerates it for models whose layout a user has tangled.
|
Package layout generates BPMN diagram interchange (BPMN-DI) for models that carry none, and regenerates it for models whose layout a user has tangled. |
|
panorama
Package panorama owns Atlas's design-time ArchiMate models (ADR-0189).
|
Package panorama owns Atlas's design-time ArchiMate models (ADR-0189). |
|
playground
Package playground serves the Modeler's Playground area: a caller opens a session on a model, feeds it cases, and drives it — free-running, or one occurrence at a time with a person answering the human tasks.
|
Package playground serves the Modeler's Playground area: a caller opens a session on a model, feeds it cases, and drives it — free-running, or one occurrence at a time with a person answering the human tasks. |
|
processdoc
Package processdoc serves process documentation (ADR-0143): a published BPMN process as a stored PDF plus the element prose it describes, its version history, and the revocable public link a reader without an account follows.
|
Package processdoc serves process documentation (ADR-0143): a published BPMN process as a stored PDF plus the element prose it describes, its version history, and the revocable public link a reader without an account follows. |
|
runloop
Package runloop carries Atlas's single-writer boundary for design-time and API state.
|
Package runloop carries Atlas's single-writer boundary for design-time and API state. |
|
sidecar
Package sidecar is the durable-file discipline Atlas's design-time stores share.
|
Package sidecar is the durable-file discipline Atlas's design-time stores share. |
|
taskfolder
Package taskfolder serves the Tasks app's folders: the saved filters a person builds for themselves out of listboxes, so a recurring question ("what is open on customer enquiries?") becomes a place in the sidebar instead of something retyped into the search box every morning (ADR-0268).
|
Package taskfolder serves the Tasks app's folders: the saved filters a person builds for themselves out of listboxes, so a recurring question ("what is open on customer enquiries?") becomes a place in the sidebar instead of something retyped into the search box every morning (ADR-0268). |
|
token
Package token mints and validates Atlas's opaque share tokens.
|
Package token mints and validates Atlas's opaque share tokens. |
|
vault
Package vault is Atlas's engine-internal encrypted secret store: worker credentials sealed at rest with AES-256-GCM under a master key that never leaves the operator's control (ADR-0069), on by default with a generated key file when no operator key is supplied (ADR-0070).
|
Package vault is Atlas's engine-internal encrypted secret store: worker credentials sealed at rest with AES-256-GCM under a master key that never leaves the operator's control (ADR-0069), on by default with a generated key file when no operator key is supplied (ADR-0070). |
|
Package benchmarks holds Atlas's reproducible performance harness (work programme B of the v0.2.0 "Proof of Reliability & Performance" initiative).
|
Package benchmarks holds Atlas's reproducible performance harness (work programme B of the v0.2.0 "Proof of Reliability & Performance" initiative). |
|
Package checkpoint holds the on-disk format primitives for engine recovery checkpoints (ADR-0133).
|
Package checkpoint holds the on-disk format primitives for engine recovery checkpoints (ADR-0133). |
|
cmd
|
|
|
atlas
command
Command atlas is the single-binary Atlas server: one self-contained process that embeds the engine, exposes an HTTP API, and serves the web UI.
|
Command atlas is the single-binary Atlas server: one self-contained process that embeds the engine, exposes an HTTP API, and serves the web UI. |
|
Package compiler turns a BPMN model into an immutable, integer-indexed CompiledProcess (ADR-0004).
|
Package compiler turns a BPMN model into an immutable, integer-indexed CompiledProcess (ADR-0004). |
|
Package conformance is Atlas's curated BPMN conformance suite: a collection of small, deterministic process models plus the oracles that prove the engine executes them correctly.
|
Package conformance is Atlas's curated BPMN conformance suite: a collection of small, deterministic process models plus the oracles that prove the engine executes them correctly. |
|
differential
Package differential is the conformance suite's cross-engine oracle: it runs the same process on Atlas and on an independent reference BPMN engine and compares a normalized outcome, so a control-flow bug shows up as disagreement with a second implementation — the one oracle the suite's other checks (golden, replay, invariants, metamorphic) can't provide, since they all trust Atlas alone.
|
Package differential is the conformance suite's cross-engine oracle: it runs the same process on Atlas and on an independent reference BPMN engine and compares a normalized outcome, so a control-flow bug shows up as disagreement with a second implementation — the one oracle the suite's other checks (golden, replay, invariants, metamorphic) can't provide, since they all trust Atlas alone. |
|
connector
|
|
|
ad
Package ad integrates Active Directory as a service-task Worker Type: a BPMN AD task performs an AD-specific provisioning operation — create a user, set a password, enable or disable an account, or add/remove a group member — against a model-authored server through the job path (ADR-0166), the same seam the ldap package uses (ADR-0154).
|
Package ad integrates Active Directory as a service-task Worker Type: a BPMN AD task performs an AD-specific provisioning operation — create a user, set a password, enable or disable an account, or add/remove a group member — against a model-authored server through the job path (ADR-0166), the same seam the ldap package uses (ADR-0154). |
|
agent
Package agent is the Worker Type behind an agent-driven ad-hoc subprocess (ADR-0253): it works the round job the container parks on, asks a model which of the container's tools to run next, and hands that choice back as the job's completion.
|
Package agent is the Worker Type behind an agent-driven ad-hoc subprocess (ADR-0253): it works the round job the container parks on, asks a model which of the container's tools to run next, and hands that choice back as the job's completion. |
|
clientreg
Package clientreg is the client registry every Worker Type shares: a name → client map that a worker resolves a model's worker reference through, plus the part that is not a map — *why* a worker an operator did configure is missing from it.
|
Package clientreg is the client registry every Worker Type shares: a name → client map that a worker resolves a model's worker reference through, plus the part that is not a map — *why* a worker an operator did configure is missing from it. |
|
clio
Package clio integrates a clio event store as a server-registered Atlas worker: a BPMN clio "write-events" task appends an event to a configured clio instance through the job path (ADR-0036), mirroring how the dmn package delegates a decision to temis (ADR-0014).
|
Package clio integrates a clio event store as a server-registered Atlas worker: a BPMN clio "write-events" task appends an event to a configured clio instance through the job path (ADR-0036), mirroring how the dmn package delegates a decision to temis (ADR-0014). |
|
csvimport
Package csvimport is Atlas's in-process worker for the CSV-to-JSON Worker Type task (ADR-0139), and the CSV parser the API's upload-validation endpoint shares with it (ADR-0084).
|
Package csvimport is Atlas's in-process worker for the CSV-to-JSON Worker Type task (ADR-0139), and the CSV parser the API's upload-validation endpoint shares with it (ADR-0084). |
|
discord
Package discord integrates Discord as a server-registered Atlas worker: a BPMN Discord task performs one chat operation — send a message, edit one, delete one, read one, list a channel's messages, or open a thread — against a configured Discord Worker via the job path (ADR-0258).
|
Package discord integrates Discord as a server-registered Atlas worker: a BPMN Discord task performs one chat operation — send a message, edit one, delete one, read one, list a channel's messages, or open a thread — against a configured Discord Worker via the job path (ADR-0258). |
|
entra
Package entra provisions identities in Microsoft Entra ID (formerly Azure AD) through the Microsoft Graph API on behalf of a BPMN service task (ADR-0172).
|
Package entra provisions identities in Microsoft Entra ID (formerly Azure AD) through the Microsoft Graph API on behalf of a BPMN service task (ADR-0172). |
|
envname
Package envname turns a worker name or a secret reference into the environment variable it is read from.
|
Package envname turns a worker name or a secret reference into the environment variable it is read from. |
|
googlesheets
Package googlesheets integrates Google Sheets as a Worker Type (ADR-0203): a BPMN service task performs one spreadsheet operation — create a spreadsheet, add a sheet to one, read a range, write a range, append rows, clear a range, delete a sheet, or trash the whole file — against a Worker an operator configured, via the job path (ADR-0235).
|
Package googlesheets integrates Google Sheets as a Worker Type (ADR-0203): a BPMN service task performs one spreadsheet operation — create a spreadsheet, add a sheet to one, read a range, write a range, append rows, clear a range, delete a sheet, or trash the whole file — against a Worker an operator configured, via the job path (ADR-0235). |
|
jira
Package jira integrates Atlassian Jira as a server-registered Atlas worker: a BPMN Jira task performs one issue-tracker operation — create an issue, read one, update it, move it through its workflow, comment on it, assign it, search for issues, or look an account up — against a configured Jira instance via the job path (ADR-0201).
|
Package jira integrates Atlassian Jira as a server-registered Atlas worker: a BPMN Jira task performs one issue-tracker operation — create an issue, read one, update it, move it through its workflow, comment on it, assign it, search for issues, or look an account up — against a configured Jira instance via the job path (ADR-0201). |
|
ldap
Package ldap integrates a generic LDAP directory as a service-task Worker Type: a BPMN LDAP task performs a directory operation — search an entry, add / modify / delete an entry, or set an entry's password — against a model-authored server through the job path (ADR-0154), the same seam the rest and scim packages use for HTTP (ADR-0067/0151).
|
Package ldap integrates a generic LDAP directory as a service-task Worker Type: a BPMN LDAP task performs a directory operation — search an entry, add / modify / delete an entry, or set an entry's password — against a model-authored server through the job path (ADR-0154), the same seam the rest and scim packages use for HTTP (ADR-0067/0151). |
|
ldif
Package ldif reads and writes directory entries held in a file — LDIF (RFC 2849) and DSML v1 (ADR-0171).
|
Package ldif reads and writes directory entries held in a file — LDIF (RFC 2849) and DSML v1 (ADR-0171). |
|
mail
Package mail integrates an outbound e-mail provider as a server-registered Atlas worker: a BPMN mail task sends a model-authored message through a configured provider via the job path (ADR-0079), mirroring how the clio package delegates an append to a registry-managed endpoint (ADR-0036).
|
Package mail integrates an outbound e-mail provider as a server-registered Atlas worker: a BPMN mail task sends a model-authored message through a configured provider via the job path (ADR-0079), mirroring how the clio package delegates an append to a registry-managed endpoint (ADR-0036). |
|
nettimeout
Package nettimeout defines the outbound-call budget every Atlas worker shares.
|
Package nettimeout defines the outbound-call budget every Atlas worker shares. |
|
oauth2
Package oauth2 is the OAuth2 token machinery every Atlas worker that speaks to a token-protected API shares: an expiry-aware cache, the token-endpoint exchange, and the two grants that are not specific to any one vendor.
|
Package oauth2 is the OAuth2 token machinery every Atlas worker that speaks to a token-protected API shares: an expiry-aware cache, the token-endpoint exchange, and the two grants that are not specific to any one vendor. |
|
remedy
Package remedy integrates BMC Remedy (BMC Helix ITSM / the AR System) as a server-registered Atlas worker: a BPMN Remedy task creates an entry (e.g.
|
Package remedy integrates BMC Remedy (BMC Helix ITSM / the AR System) as a server-registered Atlas worker: a BPMN Remedy task creates an entry (e.g. |
|
remedy/mock
Package remedymock is an in-memory stand-in for a BMC Remedy AR System REST API, so the Remedy worker (ADR-0106) can be exercised end to end without a real Remedy / Helix ITSM instance.
|
Package remedymock is an in-memory stand-in for a BMC Remedy AR System REST API, so the Remedy worker (ADR-0106) can be exercised end to end without a real Remedy / Helix ITSM instance. |
|
rest
Package rest integrates an external HTTP-REST API as a service-task Worker Type: a BPMN REST task calls a model-authored endpoint through the job path (ADR-0036/0067), mirroring how the dmn package delegates a decision to temis (ADR-0014).
|
Package rest integrates an external HTTP-REST API as a service-task Worker Type: a BPMN REST task calls a model-authored endpoint through the job path (ADR-0036/0067), mirroring how the dmn package delegates a decision to temis (ADR-0014). |
|
rest/openapimock
Package openapimock serves a mock REST API from an OpenAPI 3 document, so a process with a REST task (ADR-0067) can be run end to end before the API it calls exists — or without pointing a draft at the real one (ADR-0217).
|
Package openapimock serves a mock REST API from an OpenAPI 3 document, so a process with a REST task (ADR-0067) can be run end to end before the API it calls exists — or without pointing a draft at the real one (ADR-0217). |
|
scim
Package scim integrates a SCIM 2.0 service provider as a service-task Worker Type (RFC 7643/7644): a BPMN SCIM task performs a resource operation — create, get, replace, patch, delete, or search a User/Group — against a model-authored provider endpoint through the job path (ADR-0153), the same seam the rest package uses for a generic HTTP call (ADR-0067).
|
Package scim integrates a SCIM 2.0 service provider as a service-task Worker Type (RFC 7643/7644): a BPMN SCIM task performs a resource operation — create, get, replace, patch, delete, or search a User/Group — against a model-authored provider endpoint through the job path (ADR-0153), the same seam the rest package uses for a generic HTTP call (ADR-0067). |
|
script
Package script is Atlas's in-process worker for polyglot script tasks (PowerShell, Python, JavaScript — ADR-0047).
|
Package script is Atlas's in-process worker for polyglot script tasks (PowerShell, Python, JavaScript — ADR-0047). |
|
sharepoint
Package sharepoint integrates Microsoft SharePoint as a server-registered Atlas worker: a BPMN SharePoint task creates a list item in a model-authored site and list through a configured provider via the job path (ADR-0141), mirroring how the mail package delegates a send to a registry-managed provider (ADR-0079).
|
Package sharepoint integrates Microsoft SharePoint as a server-registered Atlas worker: a BPMN SharePoint task creates a list item in a model-authored site and list through a configured provider via the job path (ADR-0141), mirroring how the mail package delegates a send to a registry-managed provider (ADR-0079). |
|
soap
Package soap integrates a SOAP / Web Services (WSDL) endpoint as a service-task worker: a BPMN SOAP task invokes an operation — reading identities (import) or provisioning accounts (outbound) — against a model-authored web-service endpoint through the job path (ADR-0165), the same seam the rest package uses for a generic HTTP call (ADR-0067).
|
Package soap integrates a SOAP / Web Services (WSDL) endpoint as a service-task worker: a BPMN SOAP task invokes an operation — reading identities (import) or provisioning accounts (outbound) — against a model-authored web-service endpoint through the job path (ADR-0165), the same seam the rest package uses for a generic HTTP call (ADR-0067). |
|
sqldb
Package sqldb runs one SQL statement against a relational database on behalf of a BPMN service task — for Microsoft SQL Server, MariaDB, or PostgreSQL (ADR-0173).
|
Package sqldb runs one SQL statement against a relational database on behalf of a BPMN service task — for Microsoft SQL Server, MariaDB, or PostgreSQL (ADR-0173). |
|
temis
Package temis integrates a central temis decision service as a server-registered Atlas worker: a business rule task marked <atlas:temisConnector> delegates its decision to a configured temis instance through the job path (ADR-0050), instead of the embedded temis library that evaluates a local decision (ADR-0014).
|
Package temis integrates a central temis decision service as a server-registered Atlas worker: a business rule task marked <atlas:temisConnector> delegates its decision to a configured temis instance through the job path (ADR-0050), instead of the embedded temis library that evaluates a local decision (ADR-0014). |
|
webscrape
Package webscrape integrates web scraping as a service-task worker: a BPMN web-scraping task fetches a model-authored URL and extracts the elements matching a CSS selector through the job path (ADR-0118), mirroring how the rest package calls a model-authored HTTP endpoint (ADR-0067).
|
Package webscrape integrates web scraping as a service-task worker: a BPMN web-scraping task fetches a model-authored URL and extracts the elements matching a CSS selector through the job path (ADR-0118), mirroring how the rest package calls a model-authored HTTP endpoint (ADR-0067). |
|
Package dmn integrates the temis DMN decision engine (github.com/pblumer/temis) into Atlas, so a BPMN business rule task can delegate a decision and get an answer back.
|
Package dmn integrates the temis DMN decision engine (github.com/pblumer/temis) into Atlas, so a BPMN business rule task can delegate a decision and get an answer back. |
|
docs
|
|
|
adr
Package adr carries the ADR directory's own conventions as code: the parser for a decision record, the guard tests in adr_test.go that keep the directory and its index honest, and the merge-time numbering below.
|
Package adr carries the ADR directory's own conventions as code: the parser for a decision record, the guard tests in adr_test.go that keep the directory and its index honest, and the merge-time numbering below. |
|
adr/cmd/adrnum
command
Command adrnum assigns a number to every architecture decision record that is still in flight, and makes the repository agree about it.
|
Command adrnum assigns a number to every architecture decision record that is still in flight, and makes the repository agree about it. |
|
Package engine is the heart of Atlas: a single-writer processor that folds commands into durable events and applies them to state.
|
Package engine is the heart of Atlas: a single-writer processor that folds commands into durable events and applies them to state. |
|
Package expr is Atlas's boundary to a FEEL engine.
|
Package expr is Atlas's boundary to a FEEL engine. |
|
Package job is Atlas's in-process worker harness: it bridges the engine's activatable jobs to worker handlers and feeds their results back as commands (ADR-0007, streaming pull with completion-as-command).
|
Package job is Atlas's in-process worker harness: it bridges the engine's activatable jobs to worker handlers and feeds their results back as commands (ADR-0007, streaming pull with completion-as-command). |
|
Package jobtype carries Atlas's engine-wide job-type table: the one mapping from a job type's name to the integer index a job on disk carries.
|
Package jobtype carries Atlas's engine-wide job-type table: the one mapping from a job type's name to the integer index a job on disk carries. |
|
Package logging gives Atlas's operational logs a stable contract (ADR-0142).
|
Package logging gives Atlas's operational logs a stable contract (ADR-0142). |
|
Package mcp is Atlas's Model Context Protocol server: it lets an AI agent drive a running Atlas server through tools — deploy a BPMN model, manage design-time projects and artifacts, start an instance, complete human tasks, and inspect live runtime state.
|
Package mcp is Atlas's Model Context Protocol server: it lets an AI agent drive a running Atlas server through tools — deploy a BPMN model, manage design-time projects and artifacts, start an instance, complete human tasks, and inspect live runtime state. |
|
Package metrics is Atlas's Prometheus exposition: an owned registry, the naming conventions every Atlas metric follows, and the HTTP handler that serves them (ADR-0142).
|
Package metrics is Atlas's Prometheus exposition: an owned registry, the naming conventions every Atlas metric follows, and the HTTP handler that serves them (ADR-0142). |
|
Package mimimport converts Microsoft Identity Manager (MIM/FIM) workflow definitions into Atlas-executable BPMN 2.0 XML.
|
Package mimimport converts Microsoft Identity Manager (MIM/FIM) workflow definitions into Atlas-executable BPMN 2.0 XML. |
|
Package model defines the records that flow through Atlas and their on-disk binary encoding.
|
Package model defines the records that flow through Atlas and their on-disk binary encoding. |
|
Package opensearch exports Atlas's durable event history to an OpenSearch (or API-compatible Elasticsearch) index.
|
Package opensearch exports Atlas's durable event history to an OpenSearch (or API-compatible Elasticsearch) index. |
|
Package playground runs a BPMN model on the real Atlas engine inside a throwaway sandbox, on a clock the caller owns.
|
Package playground runs a BPMN model on the real Atlas engine inside a throwaway sandbox, on a clock the caller owns. |
|
Package promquery asks a Prometheus-compatible store what it recorded about an Atlas node (ADR-0189 P5b).
|
Package promquery asks a Prometheus-compatible store what it recorded about an Atlas node (ADR-0189 P5b). |
|
Package state is Atlas's materialized state store: the queryable fold of the event log (ADR-0001), backed by Pebble (ADR-0003).
|
Package state is Atlas's materialized state store: the queryable fold of the event log (ADR-0001), backed by Pebble (ADR-0003). |
|
Package tracing gives Atlas distributed traces (ADR-0142).
|
Package tracing gives Atlas distributed traces (ADR-0142). |
|
Package wal is Atlas's write-ahead log: a segmented, append-only record store with group commit.
|
Package wal is Atlas's write-ahead log: a segmented, append-only record store with group commit. |
|
Package worker is Atlas's out-of-process job worker: the binary, run as a client of its own HTTP API, leasing jobs of named types and reporting what happened (ADR-0157 step 5, over the protocol of ADR-0007).
|
Package worker is Atlas's out-of-process job worker: the binary, run as a client of its own HTTP API, leasing jobs of named types and reporting what happened (ADR-0157 step 5, over the protocol of ADR-0007). |
|
Package workertype contains the design-time Worker Type manifest contract from ADR-0207.
|
Package workertype contains the design-time Worker Type manifest contract from ADR-0207. |
Click to show internal directories.
Click to hide internal directories.