MIT licensedSelf-hostedBring your own model

The agent platform you host yourself.

One agent, every channel. Grounded in your data, connected to your tools, running on your servers.

bash
git clone https://github.com/NordicAgents/vibesboard.gitcd vibesboardbun installbun run db:setup
Describe an agent — it configures itself
The Vibesboard agent creator: one typed sentence streams a reply while the live form fills itself in — name, instructions, greeting and tools — ending on the agent-created success card.

[01] Quickstart

Running in about five minutes.

Every path is the one the maintainers use. Requirements: Bun 1.2.18, Node 22, and Docker with Compose.

bash
git clone https://github.com/NordicAgents/vibesboard.gitcd vibesboard cp .env.example .envbun installbun run db:setupbun run dev

Full stack on your machine, with Postgres and MinIO in Docker.

db:setup starts PostgreSQL, Adminer and MinIO, creates the bucket, runs migrations and seeds the database. Fill in .env, then open localhost:3000.

Development guide

[02] Why Vibesboard

Plenty of tools demo a chatbot. This one is built for the week after the demo.

More than a chat playground

A streaming runtime with tools, lifecycle hooks, public deployment, access gates, configuration history and rollback.

Agents where customers already are

An embeddable web agent, WhatsApp and Instagram channels, Chatwoot sync and a unified inbox.

Answers that lead to outcomes

RAG and long-term memory wired to Google Calendar, Google Sheets, webhooks, data actions and MCP servers.

One deployment for many teams or clients

Workspaces, memberships, plans, feature flags and PostgreSQL row-level security.

Freedom from model lock-in

OpenAI, Anthropic, Google Gemini, NVIDIA and OpenAI-compatible providers, routed per agent or per task.

Control of data and inference spend

A self-hosted application, your own PostgreSQL and S3-compatible storage, encrypted tenant credentials.

[03] Channels & inbox

Your agent answers in the thread. Your team takes over in one tap.

Web chat, WhatsApp and Instagram land in a single inbox with the conversation history the agent already has. Nothing about handing a conversation to a human is a workaround.

Unified inbox — WhatsApp thread
The unified WhatsApp inbox: the booking agent auto-replies in an open thread with delivery ticks, then a human taps Pause Agent to take the conversation over.

Auto-reply with receipts

The agent answers in the live thread with delivery and read status, not from a parallel dashboard.

Pause the agent, mid-conversation

One tap hands the thread to a human and holds the agent back until it is resumed.

Messaging rules handled

The WhatsApp 24-hour messaging window is tracked in the header so nobody guesses when a template is required.

Chatwoot sync

Already running a helpdesk? Conversations sync instead of being replaced.

[04] Capabilities

The parts teams normally stitch together, already in one control plane.

Knowledge & memory

Documents chunked into pgvector for retrieval, plus long-term memory that survives the conversation.

Channels & inbox

An embeddable web agent, WhatsApp and Instagram, Chatwoot sync, and one inbox for all of it.

Tools & actions

MCP servers, webhooks, Google Sheets and data actions — real calls, not canned answers.

Scheduling

Google Calendar availability and booking, so an answer can end in a confirmed slot.

Model routing

OpenAI, Anthropic, Gemini, NVIDIA or any OpenAI-compatible endpoint, chosen per agent or task.

Multi-tenancy

Workspaces, memberships, plans and feature flags over PostgreSQL row-level security.

Hooks & versioning

Lifecycle hooks around every run, with configuration history and rollback when a change misfires.

Sharing & access gates

A public link and QR code per agent, with an optional password gate whose hash never crosses the API boundary.

[05] Models

Bring your own model, and your own bill.

Workspaces store their own encrypted provider credentials and route by agent or task. The platform key is only a fallback — swapping providers is configuration, not a migration.

OpenAIAnthropicGoogle GeminiNVIDIAOpenAI-compatible
How model routing works

[06] Deploy

Run it yourself, or let us run it.

Same codebase either way. Self-hosting is the whole product under the MIT license — there is no feature held back to make the hosted plan look better.

Self-hosted

Your infrastructure, your data, your provider keys.

  • MIT licensed, the complete platform
  • Your PostgreSQL with pgvector and your S3-compatible storage
  • Bring your own model provider credentials
  • No seat limits and no usage ceiling but your own
  • You operate upgrades, backups and uptime
Read the deployment guide

Hosted

The same build, operated for you on vibesboard.com.

  • Nothing to provision — sign in and create an agent
  • Managed PostgreSQL, storage, upgrades and backups
  • Platform model credentials included, or bring your own
  • Workspace plans and feature flags
  • Export and self-host later if you change your mind
Sign in
Every agent gets a public link and a QR code
The agent dashboard Share tab, showing the public share link and QR code for a booking agent alongside the Setup, Knowledge, Notifications, Reviews and Integrations tabs.

[07] Security

Multi-tenant isolation you can point at in the schema.

Row-level security that fails closed

Tenant-scoped queries run with workspace context. Miss the context and the query returns nothing — not everything.

Encrypted tenant credentials

Provider keys and integration secrets are encrypted per workspace, never shared across tenants.

Your storage, your retention

Documents and uploads live in your own S3-compatible bucket under your retention rules.

Audited on every pull request

Semgrep SAST, Trivy dependency scanning and complexity gates run in CI on every change.

[09] Community

Built in the open.

Vibesboard is MIT licensed and developed in the open. Read the code, file what is broken, or take a first issue.

The Vibesboard wordmark breathing on a dark aurora ground under the line "Let your agent talk".