Academy → Hermes FeaturesOfficial documentation · Arabic guidance

Deliverable Mode (Artifacts in Chat)

وضع التسليم: مخرجات جاهزة داخل المحادثة

Intermediate5 min readLesson 482 questions✓ 2026-08-18
Before you read

What this page is, and what it holds.

This page covers Deliverable Mode (Artifacts in Chat). About 5 minutes to read. Open the channel to yourself first with an allowlist. An open channel means anyone can message your agent.

6sections
1code examples
2tables
0commands
798source words
The official one-line description

How the agent ships generated charts, PDFs, spreadsheets, and other files as native attachments in messaging platforms.

What you will be able to do

Outcomes taken from this page, not a template.

  • Understand what بوابة المراسلة is and when you need it.
  • Read the table and take only the row that applies to you.
  • Know the common mistake before you hit it.
Page map

Jump to the part you need.

  1. 01How it works
  2. 02Supported file extensions
  3. 03Encouraging the agent to produce artifacts
  4. 04Kanban: artifacts ride completion notifications
  5. 05Connecting more services with MCP
  6. 06Comparison to Perplexity Computer in Slack
The full official page

Nothing summarised away.

The documentation body below is reproduced from the official source so commands and identifiers stay exact. Each section carries a short note describing what it contains.

When Hermes Agent runs inside a messaging gateway (Slack, Discord, Telegram, WhatsApp, Signal, etc.), it can deliver generated files directly into the chat — not as paths the user has to copy, but as native attachments.

A chart shows up as an inline image. A PDF report shows up as a file download. A spreadsheet uploads as .xlsx. The agent does not need to write a MEDIA: tag or do anything special — it just generates the file and mentions its absolute path in the response. The gateway picks the path out of the text, removes it from the visible message, and uploads the file natively.

How it works

Explains the idea itself. Read it slowly; the later sections build on it.

Three pieces fit together:

  1. The agent has tools that produce files. execute_code for charts via matplotlib, the docx skill for Word documents, the xlsx skill for spreadsheets, the pdf and latex-pdf-report skills for PDFs, the powerpoint skill for decks, image_generate for images, text_to_speech for audio, and so on.
  1. The gateway scans agent responses for file paths. Any absolute path (/tmp/...) or home-relative path (~/...) ending in a supported extension gets extracted. Paths inside code blocks and inline code are ignored so code samples are never mutilated.
  1. The gateway dispatches by file type. Images embed inline where the platform supports it; videos embed inline; audio routes to voice/audio attachments; everything else uploads as a file attachment.

Supported file extensions

A lookup table. Do not read it all; find the row that applies to you.

CategoryExtensionsDelivery
Images.png .jpg .jpeg .gif .webp .bmp .tiff .svgInline embed
Video.mp4 .mov .avi .mkv .webm .3gpInline embed (where supported)
Audio.mp3 .m2a .wav .ogg .opus .m4a .flacVoice / audio attachment
Documents.pdf .docx .doc .odt .rtf .txt .md .epubFile upload
Data.xlsx .xls .ods .csv .tsv .json .xml .yaml .ymlFile upload
Geospatial.kmz .kml .geojson .gpxFile upload
Presentations.pptx .ppt .odp .keyFile upload
Archives.zip .tar .gz .tgz .bz2 .xz .7z .rar .apk .ipaFile upload
Web.html .htmFile upload

.py, .log, and other source-file extensions are intentionally excluded so the agent doesn't auto-ship arbitrary source files; if you want to send code to the user, use a code block.

Encouraging the agent to produce artifacts

Explains the idea itself. Read it slowly; the later sections build on it.

The agent doesn't reach for artifacts by default — it has to know to. Two ways to nudge it:

Per-session: ask explicitly ("send me the comparison as a chart", "return the data as a CSV") or write your own custom-instructions / personality entry that biases toward artifact-style replies on messaging platforms.

Project-level: add the bias to AGENTS.md / CLAUDE.md / .cursorrules in a project the agent works from, to your global persona in ~/.hermes/SOUL.md, or as a named preset under agent.personalities in ~/.hermes/config.yaml (switchable per session via /personality).

The mechanic the agent has to use is simple: render the file to an absolute path (e.g. /tmp/q3-revenue.png) and mention that path as plain text in the reply. The gateway does the rest. Paths inside fenced code blocks or backticks are ignored so code samples are never mutilated.

Kanban: artifacts ride completion notifications

Explains the idea itself. Read it slowly; the later sections build on it.

If you use Hermes' kanban multi-agent workflow, workers can attach deliverable files to their kanban_complete call:

Python7 lines
kanban_complete(
    summary="rendered Q3 revenue chart and report",
    artifacts=[
        "/tmp/q3-revenue.png",
        "/tmp/q3-report.pdf",
    ],
)

When the gateway notifier delivers the "task completed" message to whoever subscribed to the task in Slack/Telegram/etc., it also uploads each artifact as a native attachment to that chat. The human gets the deliverable and the summary in one place.

Files that don't exist on disk when the notifier runs are silently skipped.

Connecting more services with MCP

A lookup table. Do not read it all; find the row that applies to you.

Beyond the artifact-delivery pipeline, the agent can reach into other services via MCP (Model Context Protocol). The MCP ecosystem ships community servers for most popular tools — install whichever you need:

ServiceWhat it unlocks
NotionRead/write Notion pages, databases, query workspace
GitHubIssues, PRs, comments, repo search beyond the gh CLI
LinearTickets, projects, cycles
SlackWorkspace-wide search, read other channels
GmailInbox triage, send mail, label management
SalesforceLeads, opportunities, account data
Snowflake / BigQuerySQL against data warehouses
Google DriveFile search, contents, share management

Install MCP servers via ~/.hermes/config.yaml under the mcp_servers section. See MCP integration for the full setup guide.

Comparison to Perplexity Computer in Slack

Explains the idea itself. Read it slowly; the later sections build on it.

Perplexity Computer's Slack integration is built around the same idea: the agent generates a deliverable (chart, PDF, slide deck) and posts it back into the thread as a native attachment. Hermes Agent's deliverable mode provides the same user-facing pattern locally:

  • Generation happens in the user's own venv / sandbox (no remote tenant).
  • Files land in the chat via the same Slack files.uploadV2 API.
  • Connector breadth comes via MCP rather than a curated catalog of 400 hosted integrations — install the ones you actually use.

OAuth tokens stay on the user's machine in auth.json / .env. No hosted token storage. No multi-tenant microVM. Same end result.

Knowledge check

2 questions answered by this page alone.

Every option is a real identifier from the Hermes documentation. The wrong ones are real too, just from other pages.

1. In this lesson's table, what is the “Extensions” for “Web”?
2. Which of these headings does not appear in this lesson?