"The [vinculum is the] processing device at the core of every Borg vessel. It interconnects the minds of all the drones." -- Seven of Nine (In Voyager episode "Infinite Regress")
Vinculum is a no-code/low-code system for gluing together different systems and bridging multiple protocols. Think of it as a Swiss Army Knife for communications: while not the best tool for demanding tasks where you'd want a purpose-built solution, it handles a large variety of integration tasks adequately — letting you quickly MacGyver together a solution with a few lines of configuration.
- HCL Configuration — Declarative configuration in HashiCorp Config Language (similar to Terraform), with constants, expressions, and assertions
- Publish/Subscribe Messaging — One or more event buses with MQTT-style topic routing, wildcards, and parameter extraction
- Server Protocols — HTTP(S), Vinculum WebSocket (VWS), plain WebSocket, Model Context Protocol (MCP), and Prometheus/OpenMetrics, with pluggable authentication (basic, OIDC, OAuth2)
- Client Protocols — HTTP(S), Kafka, MQTT, Redis/Valkey (pub/sub, streams, key-value), AWS SQS, AWS SNS, VWS (to other Vinculum instances), OpenAI / LLM, and OpenTelemetry (OTLP) export
- Triggers — A range of trigger types for time-, event-, and lifecycle-driven actions: cron, dynamic intervals with optional jitter, absolute / dynamic times, file-system events, OS signals, startup/shutdown, watchdogs, and watches over reactive values
- Conditions — Named boolean primitives with temporal rules (activate/deactivate delays, hysteresis, retentive timing, latches, cooldown, inhibit), covering IEC 61131-3 timer and counter function-block behaviors and composable into pipelines
- State Machines — Finite state machines with guarded transitions, reactive events, key-value storage, MQTT topic matching, and OpenTelemetry tracing; composable with conditions and watchable for reactive integration
- Transformations and Procedures — JQ-based message transforms, structured-text
editorblocks, andprocedureblocks for small imperative helpers - Built-in Functions — A large standard library covering HTTP, files, templates, time, randomness, IDs, LLMs, sunrise/sunset, geographic calculartions, and more.
- Observability — Context propagation, OpenTelemetry tracing and metrics, and Prometheus exposition throughout
See doc/overview.md for full documentation including:
- Core concepts (buses, topics, subscribers, transformations)
- Configuration language reference
- Protocol details
- Examples
The examples/ directory contains complete working configurations. See examples/README.md for the index, including a dynamic DNS zone updater that combines an HTTP server, basic authentication, a procedure, and a line-editor block to safely rewrite BIND zone files.
Vinculum is built on top of several standalone Go libraries that can be used independently:
| Project | Description |
|---|---|
| vinculum-bus | High-performance in-process EventBus with MQTT-style topic patterns and optional OpenTelemetry observability |
| vinculum-fsm | cty-native finite state machine library with guarded transitions, storage, topic matching, and tracing |
| vinculum-kafka | Kafka producer/consumer adapters that plug into a vinculum-bus EventBus |
| vinculum-mqtt | MQTT publisher/subscriber adapters that plug into a vinculum-bus EventBus |
| vinculum-redis | Redis/Valkey pub/sub and streams adapters that plug into a vinculum-bus EventBus |
| vinculum-sns | AWS SNS sender adapter that plugs into a vinculum-bus EventBus |
| vinculum-sqs | AWS SQS sender/receiver adapters that plug into a vinculum-bus EventBus |
| vinculum-vws | Vinculum WebSocket Protocol — client and server for exposing an EventBus over WebSockets |
Vinculum also relies on several smaller standalone HCL/cty helper libraries: go2cty2go, hcl-jqfunc, go-structdiff, time-cty-funcs, rand-cty-funcs, and sqid-cty-funcs.
MIT License - see LICENSE file for details.
Vinculum (Latin: "bond" or "link") — connecting your systems with reliable, configurable messaging.