---
title: "Upload documents"
description: "Add files to the Library and track their processing."
canonical: https://ocho.bot/docs/library/upload-documents
last_updated: 2026-07-12
---

# Upload documents

> Add files to the Library and track their processing.

> Who can do this: Library admins. The upload zone is visible to everyone, but uploads from anyone else fail with "Upload failed: Requires super_rag_dataset_admin role" after clicking Upload.

## Upload files

1. In the sidebar, open **Documents** under **Library**. 2. Drag files onto the upload zone ("Drag documents here or click to select"),    or click it to pick files. 3. Picked files are queued, not uploaded yet — each shows its size and a    **Queued** badge. Use **Remove** to drop a single file or **Clear** to empty    the queue. 4. Click **Upload (N)** to start the batch. Each file shows a spinner with a    percentage while its bytes upload, then moves through **Parsing →    Extracting → Chunking → Embedding → Indexing** until it lands on    **Indexed** (or **Failed**).

**Supported types:** PDF, Word (.docx), PowerPoint (.pptx), Excel (.xlsx, .xls), CSV, plain text (.txt), markdown (.md), HTML, and transcript files (.vtt, .srt).

**Size limits:** up to 5 GB per file. There is no file-count limit, but a batch can't exceed 5 TB in total — files beyond that are skipped with "Batch total can't exceed 5.00 TB; N file(s) skipped."

## Track and fix documents

The Documents table shows every file with its **State** — Queued, Parsing, Chunking, Embedding, Indexing, Indexed, or Failed. (The Extracting stage from the upload zone is folded into Parsing here, and in-app markdown documents that haven't been published show a **draft** state.) While a batch is indexing, Library admins see an "Indexing in progress" banner above the table with a completed/total counter and progress bar, and a matching "Indexing N/M" pill in the footer tracks the batch from any page.

Keep the tab open until each file's byte upload finishes; after that, parsing and indexing run server-side and you can safely navigate away.

On a document's page, the **Lifecycle** section shows where it is. While a document is processing, it displays a stage-by-stage stepper with the current stage highlighted. An estimated finish ("~Ns remaining") appears only when timings from earlier runs are available — documents processing for the first time typically show no estimate. Once finished, it shows just the state chip (for example **Indexed**).

For **failed** documents, the page shows the error with a suggested fix — for example enabling Force OCR for scanned files, or simply retrying. As a Library admin, clicking a fix button (for example **Enable Force OCR and rebuild** or **Retry now**) starts the rebuild immediately — no Reason field needed. For everyone else the buttons appear disabled, and on the org-wide document library's document page they are not wired up at all.

**Rebuild Document** — Library admins can re-run processing from the **Admin Actions** section on the document page, optionally ticking **Force OCR** (re-extract text via OCR even if the PDF has embedded text). You must fill in the **Reason (required)** field first — the Rebuild button stays disabled until you do.

## Add context to a document

Editing document context currently lives in the org-wide document library, which is not in the sidebar yet — open `/app/library/documents` directly and click through to a document's overview. Its **About** section is collapsed by default (it shows just "No description yet." until you click the About header to expand it). Once expanded, it has an editable description ("Add a short summary so this is easy to find later." — saves on blur) and rich-text **Notes** (bold, italic, bullet and ordered lists, with a **Save notes** button). The document page reached from the sidebar Documents table shows the description read-only.

## Delete documents

Deleting removes a document from every dataset it belongs to and deletes its chunks and embeddings. **This cannot be undone.**

Delete is a Library-admin action, and it currently lives only in the org-wide document library (`/app/library/documents`): open a document's overview to delete it — the confirmation there shows how many datasets are affected ("This document is attached to N dataset(s)…") — or select rows in that list for bulk delete, which asks only a generic "Delete N rows?" without a dataset count. The sidebar Documents table has no delete — its only selection action is **Add to dataset**.

## Good to know

- Uploading a document does not make it searchable by itself — it must belong

to a dataset that has been built. See   [Create and build datasets](/docs/library/create-and-build-datasets).

- Individual failed files in a batch can't be retried in place yet — the Retry

button is disabled ("Retry will be added in a follow-up"). Remove the file   and re-upload it.

- The **Attached Datasets** list on a document's page currently shows "No rows

yet" even for documents that are in a dataset. To see what's attached, open   the dataset and check its Documents tab instead.

- The "Search documents…" box in the org-wide document library does not

currently filter the list.

- When you re-publish or reprocess an indexed document, the previous version

keeps serving search results until the replacement finishes indexing — the   document keeps its **Indexed** badge while a smaller re-indexing progress   bar runs.

All docs: https://ocho.bot/docs

---

Ocho — AI knowledge orchestration · [Home](https://ocho.bot/) · [Docs](https://ocho.bot/docs) · [Blog](https://ocho.bot/blog) · [About](https://ocho.bot/about) · [Developers](https://ocho.bot/developers) · [Contact](https://ocho.bot/contact) · [llms.txt](https://ocho.bot/llms.txt)
