Repository navigation
Architecture
VibeAround is a local runtime with three main surfaces: desktop, browser, and messaging channels.
Desktop UI / Tauri
|
v
Rust runtime ---- Web dashboard / WebSocket / Preview proxy
|
+---- Agent processes over stdio / PTY
|
+---- Channel plugins over stdio JSON-RPC
|
+---- Local API bridge for provider/profile routes
| Path | Role |
|---|---|
src/core |
Rust runtime: agents, conversations, channels, previews, PTY, tunnels, auth, config |
src/server |
Axum web server for /va/, APIs, WebSocket, pairing, preview proxy, local API bridge routes |
src/desktop |
Tauri shell, desktop IPC commands, window setup, onboarding orchestration |
src/desktop-ui |
React/Vite desktop UI |
src/web |
React/Vite web dashboard |
src/shared/client-ts |
Shared TypeScript API client and wire types |
src/shared/ui |
Shared React UI primitives |
src/shared/i18n |
Shared localization helpers |
src/resources |
Embedded registries for agents, providers, plugins, tunnels, commands, MCP tools |
src/plugins |
Plugin workspace for bundled/local channel plugins |
src/skills |
VibeAround skills injected into supported agents |
| Module | Responsibility |
|---|---|
| Agents | Discover, launch, and attach supported local CLIs |
| Conversations | Route prompts, slash commands, session lifecycle, handover |
| Channels | Start channel plugins and relay messages |
| Web server | Serve dashboard, APIs, WebSocket, previews, local auth |
| PTY | Browser terminal sessions and terminal launch integration |
| Profiles | Provider definitions, model metadata, API bridge settings |
| API bridge | Translate model API shapes and normalize provider quirks |
| Tunnels | Expose dashboard/previews publicly when enabled |
| Auth | Pair public browsers and issue local auth cookies |
The bridge turns profile configuration into local loopback endpoints. It translates requests/responses through a shared event model so agents and providers do not need to speak the same API shape.
Supported shapes include:
- OpenAI Responses
- OpenAI Chat Completions
- Anthropic Messages
- Gemini Generate Content
Provider adapters handle details such as:
- DeepSeek reasoning content
- Claude model suffix normalization
- tool-call history repair
- model alias/fake ID mapping
- provider-specific headers and endpoints
The desktop UI communicates with Tauri commands. It owns high-level user flows:
- onboarding
- Launch
- profile editor
- workspace/session selectors
- status/previews pages
- settings
It does not store secrets in the project repo. Secrets are saved under the local VibeAround home directory.
The dashboard is served under /va/ by the same runtime. It provides:
- Web Chat
- Web Terminal
- Previews
- session/workspace views
- runtime status
During development, Vite serves the frontend and proxies runtime APIs to the Rust server.
Channel plugins are Node.js subprocesses. They communicate with the Rust host through JSON-RPC over stdio. Plugins adapt platform events into VibeAround prompts and render responses back to the platform.
- A user sends a prompt from desktop, web, terminal, or an IM channel.
- VibeAround resolves the workspace, session, and selected agent/profile.
- The runtime launches or resumes the agent process.
- If a bridge profile is active, model API requests go through the local API bridge.
- Agent output streams back to the originating surface.
- Preview and handover helpers can expose additional local URLs or pairing codes.