Arvore Repo Hub

Changelog

Releases

Every version of Repo Hub CLI, from the first commit to the latest feature.

Latest: v0.22.0
v0.22.0 Latest

Memory Steering Index

The team-memory MCP now auto-generates a steering file with an index of all active memories. The model sees what memories exist without calling any MCP tool — just reads the index from context and uses get_memory(id) when it needs full content.

Feature
Auto-sync steering index in memory MCP — The @arvoretech/memory-mcp (1.3.0) now generates and maintains a team-memories-index.md steering file listing all active memories with title, category, tags, and ID. The index is synced on startup, add_memory, archive_memory, and remove_memory. Editor detection is automatic — writes to .kiro/steering/, .cursor/rules/, and .opencode/rules/ based on which directories exist.
Feature
Updated memory section in orchestrator — The Team Memory section in AGENTS.md now instructs the model to check the steering index first, use get_memory(id) for full content, and only call search_memories for semantic search. Eliminates mandatory MCP round-trips on every interaction.
v0.21.0

Fact Checker & Memory Enforcement

Two new config options that make agents more reliable: fact_checker forces verification of external state before reporting it, and memory.enforce makes team memory consultation mandatory on every interaction.

Feature
Fact Checker — New workflow.fact_checker option. When enabled, the orchestrator prompt includes a Mandatory Verification section that forbids the agent from stating the status of any external resource (PR status, deploy state, branch existence, CI results, service health) without first checking it with the appropriate tool. Prevents hallucinated status reports.
Feature
Memory Enforcement — New memory.enforce option. When enabled, the Team Memory section changes from a recommendation to a mandatory rule — the agent MUST run search_memories at the start of every interaction, not just at the beginning of tasks. Ensures institutional knowledge is always considered.
v0.20.0

Improved hub update experience

hub update now shows a changelog of all releases included in the update, with a clean spinner instead of raw package manager output. Release data is fetched from the hub website via a new /api/releases.json endpoint.

Feature
Release changelog in hub update — When updating, the CLI now fetches release data from hub.arvore.com.br/api/releases.json and displays all versions between the current and latest, with their changes grouped by type (feat, fix, refactor).
Feature
Clean spinner UX — Package manager output (pnpm/yarn/npm install logs) is now hidden behind an ora spinner. No more noisy deprecation warnings or progress bars — just a clean loading indicator and a success/fail message.
Feature
Releases JSON API endpoint — New /api/releases.json endpoint on the hub website serves the full releases data as JSON with CORS headers, enabling the CLI and other tools to consume release information programmatically.
v0.19.0

Persona as dedicated editor file

Persona is now generated as a dedicated editor file (.kiro/steering/persona.md, .cursor/rules/persona.mdc, .opencode/rules/persona.md) instead of being appended to AGENTS.md. The file is gitignored by default since it's personal. The persona TUI now collects AWS profiles, GitHub username, focus areas, and timezone.

Feature
Persona as separate editor file — All four generators (Kiro, Cursor, Claude Code, OpenCode) now write persona as a dedicated file with always-apply inclusion, instead of appending it to AGENTS.md. For Kiro it's a steering file, for Cursor a .mdc rule, for OpenCode a rule, and for Claude Code it's appended to CLAUDE.md.
Feature
Extended persona fields — The persona TUI now collects five new optional fields: AWS profiles (name:description pairs), GitHub username, Slack display name, focus areas, and timezone. All are included in the generated persona file when provided.
Feature
Persona gitignored by default — buildGitignoreLines now includes .kiro/steering/persona.md, .cursor/rules/persona.mdc, and .opencode/rules/persona.md in the managed gitignore block, since persona is personal and should not be committed.
Fix
hub scan ignores persona files — findUnsyncedAssets now skips persona.md and persona.mdc in all editor directories, so hub scan --check no longer flags them as unsynced assets.
v0.18.1

Design enforcement & upstream MCP instructions

Design system rules can now be enforced with enforce: true, and MCP instructions are rendered for upstream (proxied) MCPs too.

Feature
Design enforcement mode — New enforce: true option in the design config generates a DESIGN ENFORCEMENT — MANDATORY section in the orchestrator prompt. The agent is instructed to always consult design skills before creating or modifying UI, use only design tokens, and prefer existing components over custom ones.
Fix
Render instructions for upstream MCPs — MCPs with instructions that were listed as proxy upstreams had their instructions silently dropped from the generated orchestrator rules. Now any MCP with instructions gets them rendered regardless of whether it's direct or proxied.
v0.18.0

Sandbox via mcp.sandbox()

The sandbox MCP is now configured like any other MCP via mcp.sandbox() in hub.config.ts, instead of being auto-injected from a services entry. This makes it composable, overridable, and consistent with the rest of the config.

Refactor
mcp.sandbox() helper — New type-safe helper in define-config.ts. Call mcp.sandbox(port) in your mcps array and hub generate wires it into Cursor and Kiro mcp.json automatically — no special-casing needed.
Refactor
Remove hardcoded sandbox injection — generate.ts no longer detects services with type: sandbox and force-injects the MCP entry. The sandbox MCP now flows through the same path as every other MCP with a URL.
Refactor
Agent context injection via mcps — The Sandbox Environment section injected into QA and coding agent prompts is now triggered by the presence of a sandbox entry in the mcps array, not by services.
v0.17.3

Fix update PM detection

hub update now correctly detects which package manager was used to install the CLI globally, instead of just checking which PMs are available on the system.

Fix
Detect PM from install context, not system availability — Detection now checks npm_config_user_agent, the hub binary path, and global package lists instead of just running pnpm/yarn --version. Also fixes pnpm to use 'pnpm add -g' instead of 'pnpm install -g'.
v0.17.2

Sandbox support

New hub sandbox command manages an AIO Sandbox container with VSCode Server, browser automation, MCP endpoint, and Jupyter — all accessible locally via Docker Compose.

Feature
hub sandbox command — New command with up, down, status, logs, and open subcommands. Starts and stops the sandbox container via Docker Compose, checks running state, streams logs, and opens VSCode Server in the browser.
Feature
Docker Compose generation for sandbox — generateDockerCompose now emits a sandbox service entry when a service with type: sandbox is declared in hub.yaml. Mounts the workspace at /workspace and exposes MCP, VSCode Server, VNC browser, and Jupyter docs endpoints on the configured port.
Feature
Sandbox MCP injection on generate — hub generate now injects the sandbox MCP URL (http://localhost:{port}/mcp) into Cursor and Kiro editor configs when a sandbox service is present.
Feature
Sandbox context in agent prompts — QA and coding agent prompts receive a Sandbox Environment section on generate, documenting the available MCP tools (shell.exec, file.read/write, browser.*, jupyter.execute) and the /home/gem/workspace mount path.
Fix
Remove unused SANDBOX_IMAGE constant — Cleaned up a leftover SANDBOX_IMAGE constant from sandbox.ts that was never referenced after the image was moved to docker-compose generation.
v0.17.1

Fix remote source overwrite

Remote source skills are no longer overwritten by stale local copies when the remote fetch fails. All four generators now skip local skill copy for folders managed by remote sources.

Fix
Preserve remote source skills on fetch failure — Skills defined as remote_sources are now skipped during the local cp step in all generators (Cursor, Kiro, Claude Code, OpenCode). Previously, the local copy would overwrite a successfully synced file before the remote fetch ran, and if the fetch failed the good content was lost.
v0.17.0

Persona

New hub persona command creates a personal AI profile for each team member. The agent adapts its communication style based on who it's talking to — from CEOs who want business summaries to senior devs who want raw technical details.

Feature
hub persona — Interactive TUI that asks your name, role, technical level, extra context, and preferred language. Saves to .hub/persona.yaml — local and gitignored, so each team member has their own profile.
Feature
Persona injection in hub generate — All four editor generators (Cursor, Kiro, Claude Code, OpenCode) now read .hub/persona.yaml and inject a User Persona section into AGENTS.md with specific communication instructions tailored to the user's role and technical level.
Feature
Four technical levels — Non-technical (no jargon, business-focused), Beginner (gentle explanations), Intermediate (normal with context for niche topics), and Advanced (concise, direct, no hand-holding). Each level generates different agent behavior instructions.
Feature
Language preference — The persona includes a preferred language field. When set to anything other than English, the agent is instructed to always communicate in that language.
v0.16.0

Chat consolidation

New hub consolidate command extracts knowledge from chat sessions across Kiro, Claude Code, and OpenCode into team memories — using the editor's own CLI as the LLM engine.

Feature
hub consolidate — Reads chat history from Kiro, Claude Code, and OpenCode, compacts sessions into a batch, and spawns the editor CLI (kiro-cli, claude, or opencode) to extract decisions, conventions, gotchas, and domain knowledge into ./memories/. Zero extra dependencies — uses the model you already pay for.
Feature
Cross-editor session collection — Auto-detects chat storage for Kiro (Application Support JSON), Claude Code (~/.claude/projects JSONL), and OpenCode (~/.local/share/opencode session/message/part). Normalizes all formats into a unified structure.
Feature
Incremental processing — Tracks indexed sessions in .hub/consolidation-state.json. Running hub consolidate twice won't reprocess the same sessions. Use --reset to start fresh.
Fix
Session ordering — Collectors now sort globally by date before applying the limit, ensuring the most recent sessions are always processed first regardless of which workspace directory they're in.
v0.15.0

Enhanced orchestrator prompts

All editor generators now produce richer orchestrator prompts with core behavior, working style, code change, security, git discipline, and skills listing sections. AGENTS.md is now generated universally across all editors.

Feature
AGENTS.md for all editors — All editor generators (Cursor, Claude Code, OpenCode, Kiro) now write AGENTS.md at the workspace root. Kiro no longer generates a duplicate .kiro/steering/orchestrator.md.
Feature
Core behavior sections — Six new shared sections added to all orchestrator prompts: Core Behavior, Working Style, Search/Reading/Investigation, Code Changes, Security/Safety, and Git/Operational Discipline. Based on analysis of Cursor and Claude Code system prompts.
Feature
Skills listing in orchestrator — The orchestrator prompt now includes a Skills section that lists all available skills with descriptions, associated repositories, and guidance on when to consult them.
v0.14.0

Kanban MCP

Persistent kanban board MCP for AI agent task management with multi-session coordination, semantic search via LanceDB, and parallel chat visibility.

Feature
Kanban MCP Server — New @arvoretech/kanban-mcp with 12 tools for board and card CRUD, semantic search, subtasks, and session management.
Feature
Multi-session — Each chat identifies with a session_id. claim_card and release_card enable coordination between parallel chats. get_board shows active sessions with duration.
Feature
Semantic search — search_cards uses LanceDB with multilingual embeddings to find cards by semantic context.
Feature
Helper mcp.kanban() — New RHM CLI helper to configure the kanban MCP in hub.config.ts.
v0.13.4

OpenCode orchestrator as primary agent

The OpenCode orchestrator is now generated as a primary agent with default_agent in opencode.json, matching the arvore-hub pattern. Also fixes env var format in MCP config and generates a .ignore file for repo discovery.

Feature
Orchestrator as primary agent — The orchestrator is now written to .opencode/agents/orchestrator.md with mode: primary and default_agent: orchestrator in opencode.json, instead of being a rule file in .opencode/rules/.
Feature
Generate .ignore file — hub generate now creates a .ignore file listing all repo names with ! prefix, enabling tools like ripgrep and OpenCode to discover repo directories.
Fix
OpenCode env var format — MCP environment variables in opencode.json now use the correct {env:VAR} format instead of ${env:VAR} or ${VAR}, matching the OpenCode spec.
Fix
Clean up stale orchestrator rule — Regenerating now removes the legacy .opencode/rules/orchestrator.md file to prevent conflicts with the new primary agent.
v0.13.3

Fix YAML frontmatter in design source skills

Design source skills with colons in the description field now generate valid YAML frontmatter. Previously, the unquoted colon in 'Design source: name' caused SKILL.md parsing errors.

Fix
Quote description in skill frontmatter — The buildSkillContent function in design-sources.ts now wraps the description value in double quotes, preventing YAML parsing failures when the value contains colons.
v0.13.2

Gitignore .agent-teams

The .agent-teams directory is now automatically added to .gitignore when agent-teams-lead MCP is configured. Previously, manually adding it would get wiped on hub generate.

Fix
Persist .agent-teams in .gitignore — The buildGitignoreLines function now conditionally includes .agent-teams/ when the agent-teams-lead MCP is detected, so hub generate no longer removes it from the managed block.
v0.13.1

Agent Chat

Cross-developer agent communication via Slack threads. Your agent can now talk to agents from other developers on the team — opening threads, replying, and checking for new messages proactively.

Feature
Agent Chat MCP — New agent-teams-chat MCP that connects agents to a shared Slack channel. Agents post with their owner's identity and communicate through threads. Five tools: open_thread, reply_to_thread, read_thread, list_threads, find_thread.
Feature
Proactive Message Checking — The orchestrator actively monitors for responses after sending messages. It polls threads periodically and checks recent threads for relevant context when starting new tasks.
Feature
Configurable Message Format — Messages use handlebars-style templates (e.g. 🤖 *{{identity}}'s Agent* — {{message}}). Customizable via the MESSAGE_TEMPLATE environment variable.
Feature
Automatic Orchestrator Instructions — When agent-teams-chat MCP is detected in your config, hub generate injects an Agent Chat section into the orchestrator prompt with tool docs, proactive polling behavior, and best practices.
v0.13.0

Agent Teams

Inspired by Anthropic's Claude Code agent teams, now available across every editor. Spawn multiple AI teammates that work in parallel, share a task list, and message each other directly.

Feature
Agent Teams — Your orchestrator can now act as a team lead, spawning multiple AI teammates that work in parallel on different tasks and communicate with each other through a shared mailbox. Built as an editor-agnostic MCP layer that works with Kiro, Cursor, Claude Code, and OpenCode.
Feature
Automatic Orchestrator Instructions — When agent-teams-lead MCP is detected in your config, hub generate injects a full Agent Teams section into the orchestrator prompt with tool docs, workflow guidance, and best practices.
Feature
Task Coordination & File Locking — Tasks support dependencies and exclusive file paths to prevent conflicts. Atomic mkdir-based file locking ensures safe parallel work when multiple teammates try to claim the same task.
Feature
Inter-agent Messaging — Teammates communicate through a shared mailbox with typed messages (info, question, answer, blocker, decision). Direct messages, broadcasts, and lead messages are all supported.
v0.12.1

Security fix for runtime-lens MCP

Fix runtimeLens helper to use the correct scoped package @arvoretech/runtime-lens-mcp instead of the unscoped runtime-lens.

Fix
Scoped package name for runtime-lens — The mcp.runtimeLens() helper was resolving to the unscoped runtime-lens npm package, which could install an unrelated or malicious package. Updated to use @arvoretech/runtime-lens-mcp.
v0.12.0

hub clone

New hub clone command for cloning all repositories without running full setup. Clone first, setup later.

Feature
hub clone — Clone all repositories defined in your config without starting services, installing tools, or running dependency installation. Auto-detects SSH vs HTTPS, with --ssh and --https flags to force a specific method.
v0.11.0

React Native Support

First-class React Native/Expo support with repo.reactNative() helper, auto-detection in hub scan, TUI integration, and JSON Schema validation.

Feature
repo.reactNative() Helper — New type-safe helper for React Native projects with sensible defaults (pnpm install, pnpm start, pnpm build, pnpm test, pnpm lint).
Feature
React Native Auto-Detection — hub scan now detects app.json, app.config.js, and app.config.ts as react-native projects, preventing misidentification as plain React.
Feature
TUI Integration — hub init infers react-native for repos with mobile or app in the name. REPO_HELPER_MAP maps react-native to repo.reactNative for correct hub.config.ts generation.
Feature
JSON Schema Update — react-native added to the tech enum in hub.schema.json, enabling autocompletion and validation in hub.yaml.
v0.10.0

Interactive TUI & TypeScript Config

hub init is now a full interactive TUI built with ink — a multi-step wizard with registry integration, tech stack detection, and MCP selection. Plus TypeScript config support with type-safe helpers for repos, MCPs, and services.

Feature
Interactive TUI — hub init launches a polished terminal UI with 11 steps: welcome, name, editor, repos, agents, skills, MCPs, config format, summary, creating, and done. Agents and skills are fetched from the hub directory registry, with smart pre-selection based on your tech stack.
Feature
TypeScript Config — Define your hub config in hub.config.ts with full type safety. The defineConfig wrapper provides autocompletion, and composable helpers (repo.nestjs, mcp.postgresql, service.postgres, etc.) set sensible defaults for each framework and tool.
Feature
Config Helpers — Type-safe helpers for 7 repo frameworks, 17 MCP servers (all arvore-mcp-servers packages plus Playwright and Context7), and 8 Docker service types. Each helper pre-fills the correct package names, default commands, ports, and images.
Feature
Directory Registry Integration — The TUI fetches agents and skills from hub.arvore.com.br/directory.json at runtime. Skills matching your repo tech stack are automatically recommended. Falls back to built-in defaults when offline.
Feature
Three.js Hero Animation — The website landing page now uses a Three.js particle animation for the hero section, replacing the previous inline canvas implementation.
v0.9.0

Remote Sources & Design System

Skills and steering files can now live outside your repo — in Notion, at a URL, or on a local path. Plus a new design section in hub.yaml that teaches the AI your visual language: component libraries, icon systems, and design tokens.

Feature
Remote Sources — Define skills and steering files that live in Notion pages, raw URLs, or local filesystem paths. During hub generate, content is fetched, converted to markdown (with full Notion block support including tables, toggles, code blocks, and images), and installed into your editor config automatically.
Feature
Design System Config — New design section in hub.yaml lets you declare UI libraries (with MCP, URL, or local docs), icon libraries, design skills, and free-form instructions. The orchestrator prompt now includes a structured Design System section so the AI always knows which components and tokens to use.
Feature
MCP Description & Instructions — MCP configs now support description and instructions fields. Descriptions appear in the orchestrator's MCP listing, and instructions are injected as per-server guidance so the AI knows how to use each tool correctly.
Feature
Auto-generate .env.example — hub generate scans all MCP env vars across your config and produces a .env.example file, so new team members know exactly which secrets to configure without reading through hub.yaml.
Fix
Path Traversal Guard — Remote sources with local paths now validate that the resolved path doesn't escape the workspace directory, preventing accidental reads of files outside the project.
Fix
Fetch Timeout — URL-based remote sources now use a 30-second AbortSignal timeout, so hub generate doesn't hang indefinitely on unreachable endpoints.
Fix
Schema Validation — Fixed anyOf validation in the JSON schema for remote sources and design libraries, ensuring proper editor autocompletion and validation in hub.yaml.

Install the latest version:

$ npx @arvoretech/hub@latest