vinculum

command module
v0.28.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: BSD-2-Clause Imports: 3 Imported by: 0

README

Vinculum

"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.

Key Features

  • 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), 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
  • Transformations and Procedures — JQ-based message transforms, structured-text editor blocks, and procedure blocks for small imperative helpers
  • Built-in Functions — A large standard library covering HTTP, files, templates, time, randomness, IDs, LLMs, and more
  • Observability — Context propagation, OpenTelemetry tracing and metrics, and Prometheus exposition throughout

Documentation

See doc/overview.md for full documentation including:

  • Core concepts (buses, topics, subscribers, transformations)
  • Configuration language reference
  • Protocol details
  • Examples

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-vws Vinculum WebSocket Protocol — client and server for exposing an EventBus over WebSockets
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 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.

License

MIT License - see LICENSE file for details.


Vinculum (Latin: "bond" or "link") — connecting your systems with reliable, configurable messaging.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
clients
http
Package http implements the `client "http"` block: a reusable HTTP client configuration that the http_* verb functions in package functions use to make outbound HTTP requests from action expressions.
Package http implements the `client "http"` block: a reusable HTTP client configuration that the http_* verb functions in package functions use to make outbound HTTP requests from action expressions.
llm
Package llm provides shared types and helpers for LLM provider client implementations.
Package llm provides shared types and helpers for LLM provider client implementations.
otlp
Package otlp provides the client "otlp" implementation, which configures the OpenTelemetry SDK with an OTLP/HTTP trace exporter.
Package otlp provides the client "otlp" implementation, which configures the OpenTelemetry SDK with an OTLP/HTTP trace exporter.
redisstream
Package redisstream implements the `client "redis_stream"` block — a child of `client "redis"` that produces to and consumes from Redis Streams.
Package redisstream implements the `client "redis_stream"` block — a child of `client "redis"` that produces to and consumes from Redis Streams.
vws
Package conditions implements the condition "timer"/"threshold"/"counter" block family.
Package conditions implements the condition "timer"/"threshold"/"counter" block family.
editors
servers
auth
Package auth provides authentication middleware for vinculum servers.
Package auth provides authentication middleware for vinculum servers.
mcp
vws
triggers
at

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL