Packages
A Fair Source multi-agent runtime with deterministic agent scoring and replayable run history.
Retired package: Deprecated - superseded — operator console moved to the Syntropy app
Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
All notable changes to the Syntropy Elixir package. Versions follow
[SemVer](https://semver.org/); entries accumulate under Unreleased until a
publish, then move under the released version.
## [0.2.0] — 2026-07-07
Coordinated release with `syntropy-core` 0.2.0 (PyPI); the shared
runtime-events contract is at 0.2.0.
### Added
- Control-plane REST endpoints: `POST /api/agents` and
`DELETE /api/agents/:id` (with `LatticeSupervisor.remove_agent/1` and
knowledge cleanup), `POST /api/recommendations/:id/approve` and `/reject`,
and best-effort `POST /api/runs/:id/cancel`.
- Runtime provider configuration API (`/api/runtime-config`) with candidate
validation and provider connectivity testing.
- Shared specialist perspectives catalog served at `GET /api/perspectives`.
- Webhook delivery: in-memory registry, supervised dispatcher delivering
HMAC-SHA256-signed POSTs with bounded retries, per-endpoint delivery logs,
and `/api/webhooks` management endpoints.
- `thought_preview` payload key on `agent_thought` events (shared
runtime-events contract 0.2.0, mirrored in the Python runtime).
- Unique `uid` on every runtime event, persisted with a unique index and
exposed in event JSON alongside the existing `id` event name.
- Cluster-federated event history: recorders merge remote-node events with
uid deduplication, so `GET /api/events` and the cockpit event panel show
cluster-wide history.
- Cross-node run cancellation: `cancel_run/1` falls back to RPC on the
coordinating node, so any node can cancel any run in the cluster.
- Prometheus metrics at `GET /metrics` (open in dev/test, bearer-token-gated
in prod) covering BEAM, Phoenix, and Ecto plus custom task run, LLM
request/token, webhook delivery, and event recorder flush metrics.
- Production packaging: `mix release` configuration, multi-stage Dockerfile,
`railway.toml` with `/api/ready` health checks, and boot-time cluster
bootstrap validation for static clustering.
- IPv6-only private network support for hosted deployments (Railway, Fly.io):
`SYNTROPY_CLUSTER_INET6=true` switches Erlang distribution to `inet6_tcp`,
and `ECTO_IPV6=true` opens inet6 database sockets. The release env script
also starts epmd explicitly before boot, since the BEAM's implicit epmd
autostart is unreliable in minimal containers.
### Changed
- License clarified: still Business Source License 1.1 (Fair Source), now with
an Additional Use Grant permitting production use for organizations under
US $1M in revenue/funding and forbidding hosted or managed Syntropy services
at any size. Each version converts to Apache 2.0 four years after release.
The LICENSE file now ships inside the package, the Hex description says
"fair source" instead of "open-source", and the package links point at the
`syntropy-os/syntropy` repository.
- Mission control LiveView layout and dashboard styling refinements.
- `EventRecorder.record/2` is now asynchronous: events broadcast immediately
and persist in batched inserts; a synchronous `flush/0` helper exists for
tests and shutdown paths.
- `task_scheduler.ex` decomposed into focused submodules (source inquiry,
run envelopes, selection, synthesis, agent dispatch) with no behavior
change.
### Fixed
- `ClusterMonitor` now reconciles on a periodic tick (15s default) in
addition to node events, so a node that booted before its peers no longer
reports a stale `forming` cluster status after the peers connect.