Skip to content

File Management

BoxedAI allows you to upload documents to create a private knowledge base for your AI. Files are stored securely in the database and processed asynchronously for text search.

Supported File Types

BoxedAI includes built-in Analyzers that extract text from uploaded files. Your admin controls which analyzers are enabled. Supported formats include:

FormatAnalyzerExtensions
Plain Texttext_plain.txt, .md, .csv, .json, .xml, .log
PDFpdf_extract.pdf
Microsoft Worddocx_extract.docx

Files of any type can be uploaded and stored, but only files matching an enabled analyzer will have text extracted for search.

Uploading Files

From the Objects Page

  1. Navigate to the Objects section in the sidebar.
  2. Click Upload File or drag files onto the page.
  3. Select one or more files from your computer.
  4. The system begins async processing:
    • Uploading: The file binary is stored in PostgreSQL.
    • Encrypting: If encryption is enabled, the file content is encrypted with a per-file key.
    • Analyzing: Text is extracted using the appropriate analyzer.
    • Indexing: Extracted text is added to the full-text search index.
  5. The file status changes from processing to completed automatically (via WebSocket event).

Files uploaded from the Objects page have permanent scope — they're visible across your organization's knowledge base.

From a Chat (Drag & Drop)

You can also attach files directly to a chat conversation:

  1. Drag one or more files into the chat window. A drop overlay will appear.
  2. Drop the files to begin upload.
  3. Attached files appear below the message input with their processing status.
  4. Wait for all attachments to show as completed before sending your message.
  5. The file content is automatically injected as context when the message is sent.

Files attached via chat have temporary scope — they are tied to that specific chat and don't appear in the global Objects list.

File Storage

Unlike traditional file servers, BoxedAI stores all file content as binary data (BYTEA) directly in PostgreSQL. This means:

  • No filesystem dependencies: No need to manage upload directories or NFS mounts.
  • Atomic backups: A single pg_dump captures everything — metadata and file content together.
  • Simplified deployment: No separate object storage (S3, MinIO) required.

Encryption

When your organization has encryption enabled, uploaded files are protected with a per-file key hierarchy:

  1. Each file gets its own AES-256-GCM file key, generated in your browser.
  2. The file key is encrypted with your organization key and stored alongside the file.
  3. File content is encrypted with the file key before storage.
  4. The full-text search index is also encrypted.

To download or search encrypted files, your browser must have the organization key loaded.

BoxedAI includes full-text search powered by Bleve (an in-process search engine):

  • Search queries match against extracted text from all analyzed files.
  • The search index is serialized and stored in PostgreSQL (also encrypted when encryption is enabled).
  • Search is available from the Objects page and is used by the File Search capability during chat.

Managing Files

  • Download: Download the original file at any time from the Objects page.
  • Delete: Remove a file and its associated analysis data permanently.
  • Status: Files show their processing status — newly uploaded files go through processing before reaching completed.