Skip to main content
Help · Attachments

Drop files into the conversation

Back to help

The paperclip in the chat composer (or drag-drop anywhere on the pane) accepts more file types than is obvious. Each kind is processed differently — text in-process and quick, audio/video deferred to a worker that can take 20-60 minutes per hour of video.

In-process · seconds

Text — TXT, MD, PDF, DOCX

Read inside the API process. PDF text is read with pypdf, page by page: no tables and no OCR, so a scanned PDF without a text layer fails and its chip says why. DOCX is read with python-docx; tables and images are skipped. Files over 50 MiB are refused at upload. Reading stops after 2,000 PDF pages, or for a PDF or DOCX after 120 seconds, and the extracted text then ends with a line saying where it stopped. Text of 500,000 characters or more is not added to the graph. Available on the hosted demo and on self-host.

Worker · minutes

Audio — MP3, WAV, M4A

Queued to the worker process which runs faster-whisper (large-v3, multilingual). The transcript is stored on the attachment and goes through the same extraction as a text file. Available on self-host only — the hosted demo runs without the worker and rejects audio uploads with HTTP 422.

Worker · 20-60 min/h

Video — MP4, MOV, MKV, WebM

ffmpeg pulls the audio track, then the audio path runs (faster-whisper). 10 GiB per file cap. Available on self-host only — same rationale as audio. Local-path attachments (`POST /attachments/register-local-path`) let self-hosters skip the upload entirely for files already on the API container's disk.

To attach: drag a file onto the chat pane, or click the paperclip in the composer, then send your message. The file’s chip appears under your message: “extracted” means its text was read (click the chip to see it); extraction into the graph then runs in the background. A file whose text matches one already extracted in this conversation is skipped, and so is text of 500,000 characters or more — the chip still reads “extracted” in both cases.