A deep dive into the platform's major feature areas — integrations, skill authoring, browser automation, file attachments, and media embeds.
Vellum integrates with third-party services via OAuth2, each exposed as a bundled skill with its own set of tools.
The unified messaging layer provides platform-agnostic tools (messaging_send, messaging_read, messaging_search) that delegate to provider adapters for Gmail, Slack, and Telegram. Platform-specific tools (e.g. gmail_archive, slack_add_reaction) extend beyond the generic interface.
Connect via the Settings UI or the integration_connect HTTP endpoint. OAuth2 tokens are stored in the credential vault — the LLM never sees raw tokens. Telegram uses a bot token (not OAuth).
Web browsing is provided by the bundled browser skill. Activate via /browser or let the agent load it automatically.
| Tool | Description |
|---|---|
browser_navigate | Navigate to a URL |
browser_snapshot | List interactive elements |
browser_screenshot | Take a visual screenshot |
browser_click | Click an element |
browser_type | Type text into an input |
browser_press_key | Press a keyboard key |
browser_wait_for | Wait for a condition |
browser_extract | Extract page text content |
browser_fill_credential | Fill a stored credential into a form field |
browser_close | Close the browser page |
All browser tools are auto-allowed by default. browser_navigate with allow_private_network=true is elevated to high-risk.
The assistant attaches files and images to replies, delivered across three channels:
sendPhoto/sendDocument (20 MB limit)GET /v1/assistants/:id/messages returns metadata; GET /v1/assistants/:assistantId/attachments/:attachmentId returns full payloadSources: <vellum-attachment> directives in response text, or auto-converted from tool output. Limit: 100 MB per attachment.
The desktop app renders inline previews for images and video URLs (YouTube, Vimeo, Loom).
Controlled via ui.mediaEmbeds in ~/.vellum/workspace/config.json.
| Setting | Default | Description |
|---|---|---|
enabled | true | Global toggle for all inline media embeds |
videoAllowlistDomains | ["youtube.com", ...] | Domains allowed to render video embeds |
enabledSince | timestamp | Only messages after this date show embeds |