Skip to content

Search docs

Find pages, headings, and concepts. Press ⌘K or Ctrl+K to toggle.

Files

Files in projects — saved to S3, previewed by kind, with a protected project folder at the root.

Files in Alumia are first-class records: every upload, every drag-drop, every system folder is a row in the files table with metadata, ownership, and storage details.

Storage backend

File bytes live in S3. The DB row keeps:

FieldPurpose
storageKeyThe S3 object key.
storageUrlA retrievable URL (signed where applicable).
mimeType, sizeSet at upload.
parentIdFolder hierarchy — a file or folder is nested under another row.
projectIdOptional link to the owning project.
systemKindMarks system folders (e.g. the project folder).
isProtectedPrevents deletion or rename.
targetFileIdUsed by derived/version rows to reference the canonical file.

Soft deletes use deletedAt. Tags and free-form metadata go in tags and metadata.

The protected project folder

Every project gets a folder created automatically with systemKind: "projectFolder" and isProtected: true. This folder is the root of the project's file browser. You can drop files into it freely; you can't delete or rename the folder itself. Project-scoped uploads land here by default.

Saved files vs inline attachments

Saved fileInline attachment
Wherefiles row + S3 objectEmbedded in a chat message
LifetimePersists across sessionsTied to the message
DiscoverableYes, in the file browserNo, only via the conversation
Use whenThe file is part of the projectThe file is one-off context for a turn

Drag-dropping into the file browser creates a saved file. Pasting or attaching directly in a chat creates an inline attachment unless you explicitly save it.

Preview kinds

The preview layer classifies each file into one of:

  • image
  • pdf
  • video
  • audio
  • spreadsheet (csv, xls, xlsx, ods)
  • document (doc, docx, odt, rtf)
  • text (md, json, source code, yaml, etc.)
  • download (anything else — offered as a download)

Spreadsheets render natively. Documents and Markdown files render through dedicated readers. Anything not previewable falls back to a download link.

Drag and drop

The project file drag layer accepts drops anywhere a file would be useful — into a chat to attach, into the browser to save, or onto a canvas block to bind the file to that block.