Features and capabilities
A closer look at five areas: integrations, skill authoring, browser automation, file attachments, and media embeds. This is the local Linux assistant, not a hosted cloud product.
Integrations
Third-party services connect via OAuth2 (or a bot token). Each connection is a skill with its own tools. Tokens sit in the credential vault. The model never sees raw tokens.
A unified messaging layer exposes platform-agnostic tools
(messaging_send, messaging_read,
messaging_search) that delegate to Gmail, Slack, and
Telegram adapters. Provider-specific tools (for example
gmail_archive, slack_add_reaction) go beyond
that generic interface. Telegram uses a bot token, not OAuth.
Connect from Settings or by asking the assistant to run the matching setup skill. You bring the client IDs and secrets. See Channels and Privacy and data.
Dynamic skill authoring
When no existing tool covers a need, the assistant can create, test, and keep a new skill at runtime:
- Evaluate: draft a TypeScript snippet and test it in a sandbox via
evaluate_typescript_codeuntil it passes. - Persist: write the skill under the hatch workspace
skills/directory viascaffold_managed_skill. - Load:
skill_loadactivates it. - Delete:
delete_managed_skillremoves the directory and index entry.
| Tool | Risk | Description |
|---|---|---|
evaluate_typescript_code | High | Run a TypeScript snippet in a sandbox |
scaffold_managed_skill | High | Write a managed skill with SKILL.md frontmatter |
delete_managed_skill | High | Remove a managed skill directory and index entry |
Authoring tools require explicit approval. Skills can declare child
relationships with an includes frontmatter field. Managed
skills show up in the desktop Settings UI. Walkthrough:
Your first skill.
Browser
Web browsing is the bundled Browser skill. Activate with
/browser or let the assistant load it. Operations run as
assistant browser commands:
| Command | Description |
|---|---|
assistant browser navigate | Go to a URL |
assistant browser snapshot | List interactive elements |
assistant browser screenshot | Visual screenshot |
assistant browser click | Click an element |
assistant browser type | Type into an input |
assistant browser press-key | Press a key |
assistant browser wait-for | Wait for a condition |
assistant browser extract | Extract page text |
assistant browser fill-credential | Fill a stored credential into a field |
assistant browser close | Close the page |
Most browser ops are allowed by default. Navigation with
allow_private_network=true is high-risk. Check
assistant browser --json status before the first browse.
Details: Skills and tools.
Attachments
The assistant can attach files and images to replies:
- Desktop: inline in the live event stream; the Linux app shows them
- Telegram: gateway delivers photo or document (Telegram's size limit applies)
- HTTP: message list returns metadata; a separate attachments URL returns the payload
Sources: an attachment directive in the reply, or files produced by a tool. Cap: 100 MB per attachment.
Inline media embeds
The desktop app can preview images and video URLs (YouTube, Vimeo, Loom).
- Video uses ephemeral webview storage. Cookies do not persist between sessions.
- Video is click to play. Nothing auto-plays.
- Images are lazy-loaded.
- Video webviews tear down when scrolled offscreen.
Controlled by ui.mediaEmbeds in the workspace
config.json.
| Setting | Default | Description |
|---|---|---|
enabled | true | Global toggle for inline embeds |
videoAllowlistDomains | ["youtube.com", ...] | Domains allowed to render video |
enabledSince | timestamp | Only messages after this date show embeds |