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 with an inbox for each, and Chatwoot sync.

Answers that lead to outcomes

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

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.

Channel 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

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. The platform is MIT licensed and self-hosting gets all of it. Commercial add-ons for the managed service live in a separate `ee/` directory under their own license, and you never need them to run Vibesboard yourself.

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
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".