Changelog
Changelog
Section titled “Changelog”All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Section titled “[Unreleased]”- Self-registering plugin manifest (
PluginManifest+register(ctx)); single manifest-driven loader replaces the four per-kind registrars. - New plugin category
transport. First transport:@rivetos/mcp-server(StreamableHTTP, exposesmemory_*,web_*,skill_*, runtime tools). - Providers
@rivetos/provider-vllm(full vLLM surface — sampling extensions,mm_processor_kwargs/chat_template_kwargs, video, nativereasoning_content,verify_model_on_init) and@rivetos/provider-llama-server(lean llama.cpp client —top_k/min_p+extra_bodyescape hatch). Both do strict message ordering and/v1/modelsauto-discovery. These replace the earlier singleopenai-compatprovider (split into two so each can carry backend-specific code); the boot validator hard-errors onprovider: openai-compatwith a migration hint pointing atvllm/llama-server. - Provider
@rivetos/provider-claude-cli(drives localclaudevia stream-json with embedded MCP bridge). - Mesh mTLS — agent channel is HTTPS with
requestCert: true, rejectUnauthorized: true. Newmesh.tlsconfig field,loadTlsConfighelper,.meshDNS preference, peer CN logging, test-CA fixtures,agent-channel.test.ts(8 tests). Breaking: all mesh nodes must upgrade together. docs/mesh.md,docs/CONFIG-REFERENCE.md## meshsection.- Workspace templates at repo-root
workspace-templates/(canonicalCORE.md,USER.md,WORKSPACE.md,MEMORY.md,CAPABILITIES.md,HEARTBEAT.md,FILESYSTEM.md). docs/FILESYSTEM.md— canonical filesystem layout reference.- Memory v5 pipeline — three new compactor prompts (leaf/branch/root) with thinking mode, rich message formatting (ISO timestamps + agent attribution), tool-call content synthesis (
synthesizeToolCallContent), asyncros_tool_synth_queue+ drain job,rivetos memory backfill-tool-synthandqueue-statusCLI subcommands, hardened undici client, 28 new unit tests.
Changed
Section titled “Changed”- Infra moved to top-level
infra/{containers,docker,scripts,templates}/. - Memory schema relocated under the plugin (
plugins/memory/postgres/{schema,workers}/). - Unified
rivetoscontainer image atinfra/containers/rivetos/Dockerfile(--role agent | datahub | mcp). Canonical Compose stack:infra/docker/rivetos/docker-compose.yml. - Mode-aware plugin discovery — CLI-only modes no longer pull runtime-only plugins.
rivetos initreads templates from canonicalworkspace-templates/(inline fallback retained).- Doc default workspace path →
~/.rivetos/workspace(was./workspace). - Memory v5 token budgets raised to 7k/14k/20k (leaf/branch/root); source-message truncation removed; compactor model tag →
rivet-refined-v5. mesh.secretdeprecated for agent-channel auth (still honored byupdate --meshorchestration).
- vLLM/llama-server streaming delta parser accepts both
reasoning_contentand the shorterreasoningfield (vLLM0.0.3.dev10+rename).
Removed
Section titled “Removed”- Pulumi-based IaC:
@rivetos/infrapackage andrivetos infra up/preview/destroysubcommand. Provisioning is script-and-Compose driven. - Legacy split-image setup:
infra/containers/agent/Dockerfileand rootdocker-compose.yaml. packages/cli/workspace-templates/from git (regenerated bynpm run prepublishOnly).docs/ROADMAP.md.
[0.4.0] - 2026-04-05
Section titled “[0.4.0] - 2026-04-05”First public beta. Containerized distribution, reliability hardening, and launch documentation across three internal milestones (M6 containers, M7 reliability, M8 docs).
- Containerized distribution: agent + datahub Dockerfiles, root
docker-compose.yaml, Nx container build targets,DATA-PERSISTENCE.mdmodel, CI pipeline. rivetos build,rivetos initinteractive wizard,rivetos config,rivetos agent add/remove/list,rivetos updatesource-based update flow.- Pulumi infrastructure components and
rivetos infra up/preview/destroy(later removed in 0.4.x). - Reliability primitives:
RivetErrorhierarchy, channelReconnectionManager, provider circuit breaker, memory connection pooling, structured logging, audit log rotation. - Observability:
rivetos logs, runtime metrics,/health,/health/live,/metricsendpoints, enhancedrivetos statusandrivetos doctor,rivetos testsmoke suite. - Secret management:
redactSecrets(),.envpermission enforcement, config secret validation, 1Passwordop://resolution. - Multi-agent mesh:
FileMeshRegistry,MeshDelegationEngine, mesh HTTP endpoints,rivetos meshCLI,rivetos init --join,rivetos update --mesh. - Launch docs:
GETTING-STARTED,CONFIG-REFERENCE,PLUGINS,SKILLS,DEPLOYMENT,TROUBLESHOOTING, example configs,rivetos plugin init,rivetos skill init,rivetos skill validate.
Changed
Section titled “Changed”- Node.js requirement: 22 → 24.
- All package versions normalized to 0.4.0 (was unreleased 1.0.0 placeholders).
- Containers moved from
containers/toinfra/containers/. - Plugin discovery is convention-based via
package.jsonrivetosfield; all plugins exportcreatePlugin()factory. - Root
package.jsonno longer leaks plugin dependencies (onlyyamlremains).
Removed
Section titled “Removed”- Backward-compat runtime shim
core/src/runtime.ts. - Architecture violation:
memory-postgres/review-loop.tsno longer imports from@rivetos/core.
Long-form release narrative archived outside the repo:
0.4.0-milestone-6-containerized-distribution.md,0.4.0-milestone-7-reliability-polish.md,0.4.0-milestone-8-documentation-launch.md.
[0.0.8] - 2026-04-03
Section titled “[0.0.8] - 2026-04-03”Changed
Section titled “Changed”- License — changed from MIT to Apache License 2.0. NOTICE file added.
- Documentation overhaul — updated all markdown files to reflect current architecture and features.
- Deleted
CODE_OF_CONDUCT.md,REFACTOR_PROGRESS.md,docs/PHASE2.md,docs/MILESTONE-2-3-ANALYSIS.md(obsolete).
[0.0.7] - 2026-04-03
Section titled “[0.0.7] - 2026-04-03”Changed
Section titled “Changed”- Runtime decomposition —
runtime.ts(576 lines) split into focused modules:runtime.ts(296 lines) — thin compositor, registration, routing, lifecycleturn-handler.ts(263 lines) — single message turn processingmedia.ts(105 lines) — attachment resolution, download, multimodal contentstreaming.ts,sessions.ts,commands.ts— already extracted, unchanged
- Delegation/subagent/skills registration moved from
Runtime.start()toboot/registrars/agents.tsfor consistency with other registrars. - Net -280 lines from runtime. Runtime no longer knows about images, base64, content parts, history management, hook execution, or memory appending.
[0.0.6] - 2026-04-03
Section titled “[0.0.6] - 2026-04-03”- Boot package (
@rivetos/boot) — composition root properly decomposed:config.ts— YAML config loading with env var resolutionvalidate.ts— schema validation with structured error/warning reportinglifecycle.ts— PID file, signal handlers, shutdownregistrars/providers.ts— provider instantiationregistrars/channels.ts— channel instantiationregistrars/hooks.ts— safety, fallback, auto-action, session hook wiringregistrars/tools.ts— tool plugin registrationregistrars/memory.ts— memory backend wiringregistrars/agents.ts— delegation, subagent, skills registration
typechecktarget on all 21 nx packages —tsc --noEmitcatches type errors independently per package.- Typing indicators for Discord channel plugin (same pattern as Telegram — channel-managed, runtime-agnostic).
- Message splitting in channel plugins — Discord (2000 char) and Telegram (4096 char) handle overflow internally. Runtime has zero knowledge of message length limits.
- Safety cap fix — when agent hits tool iteration limit, preserves the accumulated response text instead of replacing it with a generic message.
Changed
Section titled “Changed”- CLI rewired — imports from
@rivetos/bootinstead of../../../../src/boot.js. No more rootDir violations. - Telegram typing refactored — typing indicator management moved from internal
handleMessage()wrapping to publicstartTyping()/stopTyping()methods, then back to channel-internal management (matching Discord’s pattern). Runtime doesn’t touch typing. - 21/21 packages typecheck clean — fixed ~138 type errors across the monorepo (config types, tool result types, delegation types, missing tsconfigs).
Removed
Section titled “Removed”src/boot.ts— 500-line god file replaced by@rivetos/bootpackage with 7 focused files.src/config.ts,src/validate.ts— moved topackages/boot/src/.
[0.0.5] - 2026-04-02
Section titled “[0.0.5] - 2026-04-02”rivetos logs— tail runtime logs with filtering (--lines,--follow,--since,--grep,--json). Wrapsjournalctlfor systemd service, falls back to log file reading.rivetos skills list— discovers all skills fromskill_dirs, parses SKILL.md frontmatter, shows name/description/trigger count.rivetos plugins list— enumerates configured providers, channels, memory backends, and tools with status (configured / available / missing-key).rivetos login— OAuth login for Anthropic subscription auth.
Changed
Section titled “Changed”- CLI extracted to
@rivetos/cli(packages/cli/) — independent Nx package with ownpackage.json,tsconfig.json, build/test targets. Enablesnx run cli:build,nx run cli:test, affected-only testing, and Nx caching. Oldsrc/cli/removed. @rivetos/clipath alias added totsconfig.base.json.- Root
binentry updated to point topackages/cli/src/index.ts.
Milestone
Section titled “Milestone”- 0.5 — CLI Tools: Complete. All planned CLI commands shipped.
mesh list/ping/removemoved to Milestone 6.6 (Fleet Management).
[0.0.4] - 2026-04-02
Section titled “[0.0.4] - 2026-04-02”- Config validation engine (
packages/boot/src/validate.ts) — schema validation on startup with structured error/warning reporting- Missing required fields, invalid types, unknown keys
- Cross-reference validation: agents ↔ providers, heartbeats, channel bindings, coding pipeline
- Warns on hardcoded API keys/tokens in config (use env vars)
- Warns on out-of-range values (temperature, max_tokens)
- Human-readable error messages with config path and available options
rivetos config validateCLI command — dry-run config validation without starting the runtime- Upgraded
rivetos doctor— now runs schema validation, config-aware env var checks, and provider connectivity tests - 62 unit tests for config validation covering all sections, cross-references, edge cases
ConfigValidationErrorthrown on boot with formatted output when config is invalid
Changed
Section titled “Changed”loadConfig()now validates schema before resolving env vars — catches structural issues earlyrivetos doctorversion bumped to match package version- Root test script now includes validation tests alongside Nx project tests
[0.0.1] - 2026-03-28
Section titled “[0.0.1] - 2026-03-28”- Core runtime with agent loop, router, workspace loader, message queue
- Streaming-first provider interface (
AsyncIterable<StreamEvent>) - Domain-driven design with clean architecture (types → domain → application → plugins)
- Providers: Anthropic (with OAuth subscription auth), Google Gemini, xAI Grok, Ollama, llama-server
- Channels: Telegram (grammY) with typing indicator, inline buttons, reactions
- Memory: PostgreSQL adapter with full transcript archive, summary DAG, hybrid FTS+vector search
- Tools: Shell execution with safety categorization and AbortSignal support
- Full command surface:
/stop,/interrupt,/steer,/new,/status,/model,/think,/reasoning - Message queue with deterministic behavior (commands immediate, messages queued)
- Session persistence across restarts via Memory plugin
- Thinking level control (off/low/medium/high) mapped to provider-specific parameters
- CLI:
rivetos start/stop/status/doctor/config/version+ provider commands - Toggleable structured logging via
RIVETOS_LOG_LEVELenvironment variable - YAML configuration with
${ENV_VAR}resolution - GitHub Actions CI
- Apache 2.0 license