-
Notifications
You must be signed in to change notification settings - Fork 1
Releases: startvibecoding/vibecoding
v0.1.38
Changelog
v0.1.38
✨ Features
-
Custom Provider Model Fallback
- When a provider is explicitly requested (via CLI, Gateway, or Hermes) but no model ID is specified, the factory now automatically falls back to the provider's first available model instead of using
settings.DefaultModel(which belongs to the default provider). - This prevents configuration mismatches and "model not found" errors when using non-default providers without a specified model.
- When a provider is explicitly requested (via CLI, Gateway, or Hermes) but no model ID is specified, the factory now automatically falls back to the provider's first available model instead of using
-
Hermes Configuration Default Resolution
- Updated Hermes default model resolution so that when
DefaultProvideris specified inhermes.jsonbutDefaultModelis left blank, the system correctly falls back to the custom provider's first available model instead of propagating the globalDefaultModelfromsettings.json.
- Updated Hermes default model resolution so that when
-
Refined Exposed Agent SDK Package & Examples
- Completed the mapping for all missing events and fields inside the top-level
agentbridge (includingMessages,TurnMessage,TurnToolResults,Message,ToolCall,ToolDiff,ToolError,PartialResult,Plan,Usage, andContextUsage). - Fixed a critical enum misalignment on
StreamEventTypecaused by internal-only types (likeStreamThinkSignature), implementing explicit, robust mapping helpers. - Implemented
PublicProviderAdapterto seamlessly bridge internal providers back to the publicagent.Providerinterface, and wired them up automatically to avoid package import cycles. - Added two rich top-level examples in the
example/directory (simple_agentandcustom_provider) with dual-language READMEs, showing custom provider and tool loop execution.
- Completed the mapping for all missing events and fields inside the top-level
🧪 Tests
- Added
TestCreateFallbackToFirstModelininternal/provider/factory_test.goto cover fallback behavior for both custom and built-in providers when the model ID is blank. - Added test coverage in
internal/hermes/config_test.goforGetDefaultModelwhenDefaultProvideris specified in Hermes config butDefaultModelis empty.
Assets 26
- sha256:d0af6096a8c5002aece87c6f2795dfeff8f0ba4211424f5afc6468d58296016d12 MB
2026年06月13日T06:37:11Z - sha256:f327410b181096d29471cb72712699be1b710798862643bd51e9f74744a227e0104 Bytes
2026年06月13日T06:37:11Z - sha256:4fd827764422106e727b9d860eae93202a16dae8fb3d86b38cd9a94c6b831ce611.4 MB
2026年06月13日T06:37:04Z - sha256:4bcfff78fc28f18eb38c45681ee98ab7423bb92c98d368e3b2daa60f05187323104 Bytes
2026年06月13日T06:37:03Z - sha256:30f0ecc196e512a4557a28342756a7ab70e86d9d4e3eea4771feb6634860bb3111.9 MB
2026年06月13日T06:37:25Z - sha256:ff60dddffa47af3b530dceb611745c082c2ed821c7ff1d343501fc81eec44abb103 Bytes
2026年06月13日T06:37:24Z - sha256:885b571ee5590dcc5355492e1493750db00143e5d4d5289f21784487c4e09ad511.1 MB
2026年06月13日T06:37:21Z - sha256:e7a235a158417462c1f8fff155f32499b6fa3e7580b548955254d612f7a20d80103 Bytes
2026年06月13日T06:37:20Z - sha256:50dbe25e7089fa37ea09ffb2aa1d76a9a6259862145cfaacf56f2adab6ff84aa8.32 MB
2026年06月13日T06:37:17Z - sha256:6dffdd08fd80a564a42176eea1d03fe13a900a0bc8ac7b54c2752b1292d0a00c105 Bytes
2026年06月13日T06:37:16Z -
2026年06月13日T06:31:50Z -
2026年06月13日T06:31:50Z - Loading
v0.1.37
Changelog
v0.1.37
✨ Features
- Vertex AI API Key Authentication
- Added support for authenticating directly with Google Vertex AI using API keys (
x-goog-api-key) instead of requiring gcloud OAuth tokens (ya29.). - When an API key is used, the default base URL automatically routes to
https://aiplatform.googleapis.com/v1/publishers/google/models(which doesn't require project/location parameters). - Keeps backward compatibility with existing OAuth bearer tokens.
- Added support for authenticating directly with Google Vertex AI using API keys (
🐛 Bug Fixes
-
Google Tool Thought Signatures
- Correctly extract and forward Gemini reasoning/thought signatures in tool calls, preventing any misalignment or signature mismatches.
-
TUI Raw Bash Output Preservation
- Preserved ANSI escape codes and raw spacing/newlines in Bubble Tea TUI rendering for
bashtool results, avoiding accidental italic style inheritance from the TUI framework.
- Preserved ANSI escape codes and raw spacing/newlines in Bubble Tea TUI rendering for
Assets 26
v0.1.36
Changelog
v0.1.36
✨ Features
- Doctor Subcommand (
vibecoding doctor)- New diagnostic command that checks environment, configuration, providers, sandbox, MCP servers, sessions, skills, and context files
- Reports OS/arch, Go version, shell, home/working directory
- Validates settings, gateway, and MCP config files with parse checks
- Lists configured providers with masked API keys, models with context window/max tokens/reasoning flags
- Checks bwrap sandbox availability and version
- Shows MCP servers, session counts, skills directories, and discovered context files
- Unconfigured providers (no API key) are silently skipped
🐛 Bug Fixes
-
TUI Session State
- Fixed
/clearto reset transcript rendering state, tool results, assistant markdown caches, active stream indices, plan panel, and tool modal state consistently with session switching - Extracted shared transcript/input reset helpers to reduce divergent cleanup paths
- Fixed
-
TUI Mode Switching
- Pressing Tab to cycle mode now aborts an active request before changing mode, matching
/modebehavior and preventing approval/question responses from targeting a stale agent
- Pressing Tab to cycle mode now aborts an active request before changing mode, matching
-
TUI Question Tool
- Numbered question selections now resolve to the selected option text instead of sending raw numbers back to the model
- Clearing question state now also clears the current question metadata
-
TUI Warnings and Details Modal
- Context-pressure and budget-pressure agent events are now displayed in the TUI
- Ctrl+O now reports when there is no conversation detail to show instead of opening an empty modal
-
Context Pressure Threshold Comparison
- Fixed Context Pressure threshold unit mismatch:
Percent(0-100) was compared directly againstthreshold(0-1), causing the warning to fire at ~0.5% usage instead of the intended 55% - Fixed
InitHermesConfigproject template to include explicitcontext_pressure_thresholdandbudget_pressure_thresholddefaults, preventing them from being serialized as 0 (disabled)
- Fixed Context Pressure threshold unit mismatch:
-
Live Message Rendering
- Live assistant messages render fenced code blocks as Markdown while keeping normal prose on the plain-text wrapping path to avoid awkward word splitting
-
Model Validation and Compaction
- Pass
ModelIDinChatParamsso providers know the active model - Forward model to compaction/summary generation, preventing silent fallback to default model
- Return errors with available model list when model is not found instead of silently falling back
- Consistent model error messages across factory, gateway, and TUI
- Pass
-
Google/OpenAI Tool Result Text Extraction
- Fixed Google and OpenAI providers sending empty content when tool results use rich
Contentsblocks instead of plainContentstring - Added
googleToolResultText()to extract text fromContentsblocks in Google provider - Fixed
responseToolOutput()usage in OpenAI rich tool result branch
- Fixed Google and OpenAI providers sending empty content when tool results use rich
🧪 Tests
- Added regression coverage for
/cleartranscript cleanup, question state tracking, empty details modal handling, pressure warnings, live code-block rendering, and prose wrapping - Added agent-level integration test (
TestToolResultIsIncludedInNextProviderTurn) verifying tool results with richContentsblocks reach the next provider turn - Added provider-level unit tests for Google and OpenAI tool result text extraction from
Contentsblocks
Assets 26
v0.1.35
Changelog
v0.1.35
🐛 Bug Fixes
-
TUI Print Ordering
- Replaced ad-hoc
go program.Println(...)goroutines with a single drain goroutine (printCh) to prevent message interleaving on Bubble Tea's unbuffered channel flushPendingPrintsnow usestea.Sequenceinstead oftea.Batchto preserve print order
- Replaced ad-hoc
-
Display Width Accuracy
truncate()now useslipgloss.Widthinstead of byte length, so CJK characters (2 cells) and ANSI escape sequences (0 cells) align correctly in the TUI grid- Tool modal title separator uses
lipgloss.Widthfor correct line width
-
Tool Output Improvements
lstool result now shows a compact summary (blank-line removal) in collapsed view, matchingbashoutput behavior- Tool result rendering handles multiline summaries with a newline separator instead of forcing everything onto one line
🧪 Tests
- Added
formatters_test.gowith display-width-aware truncation tests for ASCII, CJK, and mixed content
v0.1.34
✨ Features
-
Hermes Remote TUI Client
- Replaced the plain-text WebSocket client with a full Bubble Tea TUI (
hermes client) - Markdown rendering with syntax highlighting via Glamour
- Scrollable tool details modal (Ctrl+O), approval prompts (Enter/Esc), and question tool support
- Plan update display, context pressure/budget warnings, and request timers
- Native terminal scrollback for completed messages
- Slash command support (
/clear,/mode,/model,/compact,/help, etc.) - New
internal/hermes/remotetuipackage:app.go,render.go,input.go,remote.go,agent_events.go,approval.go,commands.go,formatters.go,tool_modal.go,events.go
- Replaced the plain-text WebSocket client with a full Bubble Tea TUI (
-
WebSocket Protocol Enhancements
- Added
question_request/question_responseevents for plan-mode question tool over WebSocket - Added
plan_updateevents with structured plan step data - Added
compaction_start/compaction_endevents for context compaction progress connectedevent now includesmodelandwork_dirmetadataapproval_requestevent now carriesapproval_toolandapproval_argsfor richer client-side display
- Added
-
Dispatcher Refactor
- Extracted
buildAgent()fromrunAgent()for agent creation and cleanup, improving reuse between messaging and WebSocket paths
- Extracted
-
Provider Custom Headers
- Added
providers.<name>.headersfor custom HTTP headers on provider requests - Header values support the same
${ENV}and opt-in!cmdresolution asapiKey
- Added
🧪 Tests
- Added WebSocket gateway server tests for connection, auth, chat, approval, question, and command flows
Assets 26
v0.1.32
Changelog
v0.1.32
✨ Features
-
Tool System Completeness
- Added full documentation for all registered tools:
jobs,kill,question,memory,cron, and MCP dynamic tools jobstool: list and inspect background jobs started withbash async=true, with optional cleanupkilltool: terminate a running background job by IDquestiontool: AI can ask users multiple-choice questions during plan mode to clarify requirementsmemorytool (Hermes): persistent memory viamemory.mdwith read/add/update/delete actions across sessionscrontool (Hermes/multi-agent): scheduled background tasks via sub-agents with@daily,@weekly,@every Nschedules and one-shot support- MCP dynamic tools: tools/resources/prompts from MCP servers are auto-discovered and registered per session
- Added full documentation for all registered tools:
-
Plan Mode Question Tool
- Added
questiontool, registered only in TUI + plan mode - AI can ask users multiple-choice questions; users select a preset option or type a custom answer
- Helps clarify requirements before forming a plan, producing higher-quality proposals
- Exposed via
QuestionHandleroptional interface (type assertion); does not pollute the publicAgentinterface
- Added
🐛 Bug Fixes
-
Bash Tool Output Safety
- Synchronous bash mode now enforces a 1 GB output limit using
limitedBuffer, preventing OOM from unboundedbytes.Buffergrowth
- Synchronous bash mode now enforces a 1 GB output limit using
-
Hermes
/compactCommand- Implemented the
/compactslash command for Hermes messaging mode (previously a TODO stub) - Sets a
ForceCompactflag on the session, consumed by the next agent run to trigger context compaction
- Implemented the
-
Session Durability
writeEntrynow callsf.Sync()after writing, guaranteeing data survives crash or power loss- Corrupt session lines are now logged as warnings and skipped instead of blocking session load
-
Hermes Approval Race Condition
ResolveApprovalnow usesselectto avoid writing to an already-consumed channel when timeout and approval race
-
Agent Sub-agent Panic Logging
sendParentEventnow logs the panic value before recovering, aiding diagnosis of closed-channel races
-
Atomic File Write Cleanup
writeFileAtomicno longer usesdefer os.Remove(tmpPath)which would attempt to delete an already-renamed file; cleanup is now explicit on each error path
-
Agent Loop Detection Configurability
MaxConsecutiveNoText(stuck-detection threshold) is now configurable viaAgentLoopConfig(default 95)- Fixed incorrect error message that added pre- and post-warning counters together
-
Job Manager Auto-cleanup
AddJobnow garbage-collects finished jobs older than 30 minutes (checked every 5 minutes)
-
Cron Scheduler Error Logging
checkAndRunnow logs store errors instead of silently swallowing them
-
TUI Bash Output Display
- Compressed bash tool output summary by removing blank lines to prevent excessive vertical height in the TUI collapsed view
-
Vendored Search Tools
- Added fallback to system
grep/findwhen embeddedrg/fdare unavailable for the current architecture
- Added fallback to system
📦 Distribution
- Added Linux LoongArch64 (
loong64) build and packaging targets, including tarball, Debian, and npm package metadata
✅ Tests
- Added unit tests for
limitedBuffertruncation,JobManagerGC,writeFileAtomiccleanup,sendParentEventpanic recovery,MaxConsecutiveNoTextconfigurability, session fsync durability, corrupt-line tolerance, andQuestionToolmetadata/mode-filtering/execution/error-handling
Assets 26
v0.1.31
Changelog
v0.1.31
🐛 Bug Fixes
-
Terminal Input
- Added Home/End cursor movement support in the TUI input box
- Fixed the first submitted input being swallowed after canceling an approval prompt with Esc
- Added command history navigation with Up/Down, including repeated selection through previous inputs
-
A2A Security and Reliability
- Changed the default A2A host from
0.0.0.0to127.0.0.1 - Added Bearer token authentication for
/a2a, REST A2A routes, and SSE events while keeping the Agent Card public - Replaced timestamp-based A2A task IDs with collision-resistant random IDs
- Made A2A task store reads and writes use cloned task snapshots to avoid accidental shared mutation
- Changed the default A2A host from
-
Path and Session Safety
- Fixed path containment checks to use path-aware boundaries instead of string prefix checks
- Prevented context
extraFilesfrom escaping the working directory - Encoded unsafe Hermes session path components and enforced
allowed_work_dirsduring session creation - Restricted session deletion to
.jsonlfiles under the configured session directory
-
Auth, Approval, and Resource Limits
- Switched Hermes HTTP/WebSocket token checks to constant-time comparison
- Changed the Hermes WebSocket client to send auth via
Authorization: Bearer ...instead of query strings - Cleaned up pending ACP permission requests on timeout and propagated ACP write errors
- Added request/body size limits for ACP, read-tool image files, WeChat responses, and cron A2A responses
- Added timeouts to cron A2A HTTP calls
-
Memory, Context, and Concurrency
- Added locking to memory store operations
- Fixed
memory.WriteAll()path handling and kept memory update/delete scoped to the requested section - Cloned gateway model settings before per-request
temperature/top_poverrides - Passed agent callback context/message snapshots instead of shared references
- Serialized cron job state transitions through the job store
-
Configuration and Gateway Hardening
- Gated
!commandAPI key resolution behindVIBECODING_ALLOW_SHELL_CONFIG=1 - Fixed Gateway CORS to echo only the allowed request origin
- Added a startup warning when Gateway listens beyond loopback in
yolomode without authentication - Hardened platform home/shell fallback behavior
- Gated
🧪 Tests
- Added regression coverage for A2A auth, task ID uniqueness, task snapshot isolation, and persisted working task messages
- Added coverage for path traversal, unsafe session IDs, memory section operations, ACP cleanup, CORS behavior, UTF-8 truncation, and shell-config opt-in
- Ran focused package tests plus race tests for A2A, agent, gateway, and cron
📝 Docs
- Updated A2A, Hermes, Gateway, configuration, and security docs for the new authentication and hardening behavior
Assets 22
v0.1.29
Changelog
v0.1.29
🐛 Bug Fixes
- NPM Package Wrapper
- Fixed
npm/bin/vibecodingentry script to ensure installer packages ship the correct executable wrapper - Adjusted
build-npm.shandbuild-npm-packages.shto include the wrapper consistently
- Fixed
v0.1.28
✨ Features
-
Per-Model Temperature/Top-P Configuration
- Added
temperatureandtop_pfields toModelConfigandModelfor per-model parameter tuning - Wired through OpenAI and Anthropic providers with
omitempty—nilmeans use API default - Wired through provider factory, agent loop, and ACP mode
- Gateway supports per-request
temperature/top_poverride viaChatParams - When not configured, parameters are omitted entirely (no zero-value sent to API)
- Added
-
OpenAI Responses API Support
- Added a dedicated OpenAI Responses provider path under
api: "openai-responses" - Supports Responses streaming, tool calls, reasoning summaries, and prompt cache parameters
- Responses configuration is exposed under provider
responsessettings with default prompt cache enabled - Added model compat flags for
supportsPromptCacheKeyandsupportsReasoningSummary
- Added a dedicated OpenAI Responses provider path under
🧪 Tests
- Improved provider test coverage for OpenAI Responses API and Anthropic request parsing
- Reworked Anthropic tests to use in-memory HTTP mocks instead of port-binding test servers
📝 Docs
- Updated
AGENTS.mdversion to v0.1.28
v0.1.27
✨ Features
-
Hermes Mode (
vibecoding hermes)- New messaging gateway mode for WeChat, Feishu, and WebSocket
- Persistent per-user sessions with auto-archiving on
/new - Default
yolomode for unattended operation - Smart approvals with tiered risk classification (low/medium/high)
- User whitelist for platform access control
- WebSocket streaming: real-time text_delta/think_delta/tool_call/tool_result/tool_diff/usage/done events
-
A2A Protocol (
vibecoding a2a)- New Agent-to-Agent protocol server (JSON-RPC 2.0 over HTTP + SSE streaming)
- Standalone mode:
vibecoding a2a start(port 8093) - Integration mode:
hermes.jsona2a.enabled: trueshares hermes HTTP port - Agent Card at
/.well-known/agent.json - Task lifecycle: submitted → working → completed/failed/canceled
- REST endpoints:
/a2a/send,/a2a/task,/a2a/task/cancel,/a2a/events - A2A Client:
vibecoding a2a send <message>to send tasks to other A2A servers - A2A Discovery:
vibecoding a2a discover <url>to fetch remote Agent Cards - A2A Scheduling: Cron jobs support
--a2a-targetto schedule tasks to A2A servers
-
A2A Master Mode (
--enable-a2a-master)- Configure multiple remote A2A agents via
a2a-list.json - Registers
a2a_dispatchtool for the LLM to automatically dispatch tasks to remote agents - Supports global (
~/.vibecoding/a2a-list.json) and project-level (.vibe/a2a-list.json) config --init-a2a-master-configgenerates a sample config file- Disabled by default, requires explicit opt-in
- Configure multiple remote A2A agents via
-
A2A Config Initialization
vibecoding a2a --init-a2a-configgeneratesa2a.jsonconfig templatevibecoding --init-gatewaygeneratesgateway.jsonconfig template (existing)vibecoding --init-a2a-master-configgeneratesa2a-list.jsonconfig template- All
--init-*flags support--forceto overwrite existing files
-
Scenarios & Walkthroughs Documentation
- New
docs/scenarios.md(zh + en) covering 9 practical usage scenarios - Covers: daily coding, CI integration, multi-agent, VS Code ACP, A2A server,
A2A Master cross-machine dispatch, Gateway HTTP, Hermes messaging, combined modes
- New
-
Documentation Overhaul
architecture.md: added all missing modules (a2a/acp/gateway/hermes/mcp/memory/messaging/vendored)tools.md: addeda2a_dispatchandskill_reftool docscli-reference.md: added--enable-a2a-master,--init-a2a-master-config,
--init-gateway,--force,a2asubcommand docsREADME.md: updated architecture diagram, added running modes overview
-
Pressure System
- Context Pressure:
EventContextPressurefired at 55% context usage (configurable viacontext_pressure_threshold) - Budget Pressure:
EventBudgetPressurefired at 20% remaining iterations (configurable viabudget_pressure_threshold) - One-shot events: fire once per threshold crossing, not every turn
- Messaging platforms receive pressure warnings via progress callback
- Context Pressure:
-
Smart Approvals (Tiered Strategy)
- Low risk: auto-approve
- Medium risk: auto-approve + notify user
- High risk (WebSocket): send
approval_request, wait for userapproval_response(5min timeout) - High risk (messaging): auto-reject + notify user
- Command risk classification: low/medium/high based on bash command patterns
-
Provider/Model Configuration
default_provider/default_modelinhermes.json(overridessettings.json)- CLI flags
-p/--providerand-m/--modelforhermes start - Priority: CLI flags >
hermes.json>settings.json
-
Multi-Agent Mode (
--multi-agent)- Enables sub-agent tools (spawn/status/send/destroy) in hermes sessions
- Configurable via
hermes.jsonmulti_agentfield or--multi-agentCLI flag
-
Sandbox Mode (
--sandbox)- Optional bwrap sandbox isolation (disabled by default)
- Configurable via
hermes.jsonsandboxfield or--sandboxCLI flag
-
MCP Integration
- Hermes automatically loads MCP servers from global/project
mcp.json - MCP tools registered per-session, connections auto-closed on session removal
- Hermes automatically loads MCP servers from global/project
-
Progress Events for Messaging Platforms
- Real-time tool execution progress sent to WeChat/Feishu during agent runs
- Format:
[tool]: args ✅/❌for tools,💭 ...for thinking process - Final summary sent after agent completes
-
Memory Tool
memorytool with read/add/update/delete actions- Section-level operations (User Profile, Working Memory, Lessons Learned)
- Defaults to
.vibe/memory.md(project directory) - Lookup priority:
memory.pathconfig →.vibe/memory.md→<GLOBAL_DIR>/memory.md /api/memoryHTTP endpoint (GET/PUT) for memory access
-
Hermes CLI Commands
hermes start— start daemon with all CLI flagshermes stop— stop daemon via PID file + SIGTERMhermes status— check daemon status via PID + HTTP healthhermes client— WebSocket client with streaming output and slash commandshermes config init/show— configuration managementhermes wechat login/status— WeChat iLink managementhermes feishu setup/status— Feishu configurationhermes webhook list— webhook route listinghermes memory show/clear— memory managementhermes sessions list— active session listing (queries running instance)hermes cron list/add/remove/enable/disable— cron job managementa2a start/stop/status/card— A2A server management
📝 Changes
- WeChat iLink implementation with zero external dependencies (5 files: types/protocol/auth/crypto/wechat)
- Feishu bot with official SDK and WebSocket long-connection
- Shell hooks for pre/post tool call external scripts (JSON stdin/stdout)
- Webhook inbound routing with HMAC-SHA256 signature verification
- WebSocket uses
golang.org/x/net/websocket(stdlib compatible) - PID file-based daemon management for hermes stop/status
🐛 Bug Fixes
-
NPM Installer Packaging
- Fixed release packaging flow so
vibecoding-installeralways ships executable entrybin/vibecoding. - Added
scripts/npm-installer-wrapper.jsas the single source of wrapper logic, reused by both
scripts/build-npm.shandscripts/build-npm-packages.shto avoid drift. - Adjusted
npm/.npmignoreandnpm/binhandling to avoid shipping accidental build artifacts and to keep
package manifests (files) explicit.
- Fixed release packaging flow so
-
Hermes Webhook Delivery and Filtering
- Webhook routes now treat unknown event types as non-matching unless the route explicitly allows
*. - Added
delivery_targetto webhook routes so WeChat/Feishu delivery has a concrete recipient. - Updated webhook route listing and config templates to show the delivery target when present.
- Webhook routes now treat unknown event types as non-matching unless the route explicitly allows
-
OpenAI Responses Thinking Mapping
- Mapped
--thinking xhightoreasoning.effort: "high"for the OpenAI Responses API.
- Mapped
🧪 Tests
- Reworked webhook router tests to wait on handler completion instead of sleeping, removing a race/flakiness source.
- Added coverage for webhook event rejection when the event type cannot be inferred.
- Added coverage for webhook delivery target handling.
Assets 22
v0.1.26
Changelog
v0.1.26
✨ Features
-
Gateway Mode (
vibecoding gateway)- New HTTP server exposing a standard OpenAI Chat Completions API (
/v1/chat/completions,/v1/models,/health) - Any OpenAI-compatible client (Cursor, Continue, Open WebUI, Python SDK, etc.) can connect directly
- Streaming (SSE) and non-streaming responses fully supported
- Backend powered by VibeCoding agent loop with tool execution transparent to the caller
- New HTTP server exposing a standard OpenAI Chat Completions API (
-
Multi-Session Support
- Built-in
SessionPoolfor concurrent sessions, each with isolated agent, tools, and message history - Session association via
x_session_idin request body; auto-created when absent - Configurable idle timeout (
session.idleTimeoutSeconds) and max session limit (session.maxSessions)
- Built-in
-
Sub-Agent Support in Gateway
- Optional
enableSubAgentsconfig to enable multi-agent orchestration in gateway mode - Reuses existing
AgentFactory/AgentManager/ sub-agent tools with no core agent changes
- Optional
-
Bearer Token Authentication
- Configurable via
gateway.jsonwithauth.enabledandauth.tokenslist - Disabled by default;
/healthendpoint always unauthenticated
- Configurable via
-
Slash Commands via API
/clear,/mode,/model,/models,/sessions,/compact,/status,/skill,/skills,/help- Triggered when the last user message starts with
/; processed at gateway layer without invoking LLM - Responses use standard OpenAI format with
x_commandextension field
-
Tool Visibility Configuration (
toolVisibility.mode)"content"(default): tool status sent as text incontentfield during streaming"sse_event": tool status sent as extended SSE events for custom clients"none": fully transparent, client sees only final text
-
System Prompt Handling (
systemPromptMode)"append"(default): client system messages appended to built-in system prompt"ignore": client system messages discarded entirely
-
Security: allowedWorkDirs
- Directory whitelist for
x_working_dirrequest-level overrides with path-separator-aware prefix matching - Three-layer security model: L1 auth + L2 directory control + L3 sandbox (bwrap)
- Directory whitelist for
-
Sandbox Support in Gateway
- Configurable via
gateway.jsonsandbox.enabled/sandbox.levelor--sandboxflag - Inherits detailed sandbox settings (allowedRead, deniedPaths, etc.) from
settings.json
- Configurable via
-
Gateway Configuration (
gateway.json)- Independent config file at
~/.config/vibecoding/gateway.json - Covers: listen address, auth, mode, sandbox, workingDir, allowedWorkDirs, session management, CORS, tool visibility, system prompt mode, request timeout, concurrency limit, logging
vibecoding --init-gatewayto generate template;--forceto overwrite
- Independent config file at
-
Request Timeout & Concurrency
requestTimeoutSeconds(default 1800s); streaming keeps alive as long as data flowsmaxConcurrentRequests(default 0 = unlimited)
📝 Docs
- Added
docs/gateway-proposal.mdwith full architecture, API design, security model, and implementation plan - Updated
AGENTS.mdversion note
Assets 22
v0.1.25
v0.1.25
✨ Features
-
Multi-Agent Mode
- Added opt-in
--multi-agentsupport across CLI, TUI, and ACP mode - Added
AgentManager,EventRouter, and per-agent registries so agents have isolated tools, job managers, sessions, messages, and context - Added
subagent_spawn,subagent_status,subagent_send, andsubagent_destroytools for delegated background work - Added multi-agent prompt guidance and safeguards that prevent nested sub-agent spawning
- Added opt-in
-
Cron Task Support
- Added
internal/cronwith persistent cron store and scheduler coverage - Added
/croncommand entry points in multi-agent TUI workflows
- Added
-
Provider Vendor Adapter Layer
- Added vendor adapter registration in
internal/provider/vendor*.go - Centralized provider/model creation in
internal/provider/factory - Added vendor detection for DeepSeek, Xiaomi, Kimi, MiniMax, Seed, Qianfan, Bailian, Gitee, OpenRouter, Together, Groq, Fireworks, OpenAI, and Anthropic
- Preserved existing provider config format while allowing vendor-specific defaults and generic OpenAI/Anthropic-compatible fallback
- Added model
compathandling for thinking formats, reasoning effort support, max token field selection, adaptive Anthropic thinking, and DeepSeek/Xiaomi assistantreasoning_content
- Added vendor adapter registration in
🐛 Bug Fixes
- Auto-initialized sessions on first append so sub-agents can write session entries without requiring explicit prior initialization
- Fixed sub-agent tests to wait for background runs and clean up spawned agents before temporary directory removal
- Preserved ACP Anthropic cache-control behavior while moving provider creation to the shared factory
📝 Docs
- Updated
AGENTS.mdwith provider factory and vendor adapter guidance - Replaced the multi-agent implementation checklist with a completed architecture/status document
- Removed the obsolete root
todo.md
🧪 Testing
- Added coverage for provider vendor resolution, provider factory creation, OpenAI/Anthropic compat behavior, multi-agent manager/router/sub-agent flows, cron storage/scheduler behavior, and session auto-initialization
- Verified with
make test(go test -v -race ./...)
Assets 22
v0.1.24
v0.1.24
✨ Features
- API Retry with Exponential Backoff
- Automatic retry for transient errors (5xx, network failures, rate limits) on initial HTTP connection
- Exponential backoff:
baseDelay ×ばつ 2^attempt, capped at 30 seconds - Does NOT retry on user abort (
context.Canceled), 4xx client errors, or mid-stream failures - Configurable via
retrysettings (maxRetries,baseDelay,maxDelay) - Agent forwards retry events as status updates visible in TUI and print mode
- ACP mode also receives retry configuration
🐛 Bug Fixes
-
Anthropic
cache_controlNow Opt-In- Changed default
cache_controlbehavior to off (was auto-enabled for official API base URL) - Require explicit
cacheControl: truein provider config to enable prompt caching - ACP provider creation explicitly enables
cache_controlfor Anthropic
- Changed default
-
Anthropic Tool Result Grouping
- Fixed consecutive
toolResultmessages to be grouped into a singleusermessage - Anthropic API requires all
tool_resultblocks for precedingtool_useto appear together before other content - Image blocks from tool results are now appended after all result blocks in the same message
- Fixed consecutive
-
Agent Tool-Only Loop Warning Ordering
- Moved the no-text tool-loop warning to be injected after tool results are appended
- Keeps assistant -> toolResult -> warning message ordering valid for provider and session transcripts
- Warning messages are now also persisted to session storage
📝 Docs
- Comprehensive Configuration Documentation Rewrite
- Added missing settings:
cacheControl, idle compression, full sandbox fields (bwrapPath,allowedRead,allowedWrite,deniedPaths,passEnv,tmpSize),shellPath,shellCommandPrefix,sessionDir,skillsDir,theme,retry - Documented shell command
apiKeyformat (!cmd) for password manager integration - Fixed key resolution order: config
apiKeyfirst, then derived env var - Fixed macOS config path:
~/Library/Application Support/vibecoding/ - Added top-level fields reference table with all defaults
- Added per-platform defaults for sandbox paths and env vars
- Improved examples with Claude provider
cacheControl, idle compression, project-level overrides, and custom sandbox paths
- Added missing settings:
🧪 Testing
- Added retry tests covering
IsRetryable,RetryDelay, andFormatRetryMessage - Added Anthropic provider tests for consecutive tool result grouping
- Added a regression test covering tool-only warning placement after tool results