# Files

> Where workspace files live, how to upload them (whole folders included), open, download and delete them, see a web page as it looks and change its words, save a file as PDF, how every change is kept as a version you can compare and restore, what the limits are, and how the agent shows files in its answers.

Source: https://eggent.ai/docs/files/

Every project has its own folder of files. The agent works right in it: it reads what you uploaded and puts what it made there.

## The Files panel {#panel}

The **Files** button in the header opens the file tree to the right of the chat. It shows the folder of the current project (or of the orchestrator) and stays open as you move between screens. On a phone the panel opens over the chat.

In the tree:

- **the open file is highlighted**, along with the current folder;
- **folders** expand on click and stay expanded when you move to another chat or screen;
- every folder has buttons: **upload files**, **upload folder**, **download as .zip**, **new file**, **new folder**; the top row (`/`) downloads the whole workspace folder;
- every file has **open**, **download** and **delete**.

Clicking a file opens it **in the same panel, beside the chat**, so the conversation stays in view: text and code can be read and edited in an editor with line numbers and highlighting (**Save** or Cmd/Ctrl+S), a web page seen as it looks (see [Pages](#pages)), an image viewed, audio played. The panel widens for the file — drag its left edge to change the width, which is remembered. The arrow takes you back to the tree, and **Open full page** shows the file on its own screen. A file path the agent names in an answer, and a file in the list under an answer, open the same way; Cmd/Ctrl-click opens the full page in a new tab.

## Uploading {#upload}

- **Files** — with the button on the folder you want, or by dropping them onto a folder.
- **A whole folder** — with "upload folder": the whole structure of nested folders comes across, as on your computer. Folder picking is available in desktop browsers; on an iPhone the button picks files.
- **Into a chat** — message attachments are stored with the chat. If a file is needed for the whole job rather than one conversation, upload it to the project.

If a file with the same name already exists, Eggent asks whether to replace it.

> [!NOTE]
> One upload carries at most **100 MB**. Large folders are sent in several parts automatically, so the limit only applies to the size of a single file.

## Open and download {#open}

- **Open** — web pages (`.html`), PDFs and images open rendered in a new tab. Handy when the agent has built a site or a report: you can look at it straight away. The page opens isolated and has no access to your workspace.
- **Download** — any file downloads with the download button. Names in any language are kept.

## Pages {#pages}

A web page (`.html`) opens **as it looks**, with its styles and pictures from the folder beside it; **Code** switches to its source. The page is shown isolated: its scripts run, but they cannot reach your workspace or send anything anywhere.

- **Select** lets you point at the page: a click picks a block, and the agent beside the chat sees exactly that piece of the file — so "make this heading shorter" means that heading. **Show in code** finds it in the source.
- **A double click changes the words** of a block right on the page; Enter saves, Esc cancels. Only those words change in the file — everything else stays as it was, byte for byte — and the change is a version in the [file's history](#history). Anything else (a new block, a style) is for the agent or the code.
- If the file changed while the page was open, the page is shown afresh and nothing is written.

## Save as PDF {#pdf}

The printer button beside a file opens a copy made for paper and the browser's print dialog: choose **Save as PDF**. A web page prints as it looks on screen: what appears as you scroll is shown, animations are stopped, a header that stays on screen is let go so that it does not cover every page, backgrounds are kept, and a block is not cut across two pages where that can be avoided. Markdown prints as a document, other text as it is.

## Sharing and approval {#company}

In a workspace that belongs to a [company](https://eggent.ai/docs/company.md), a file's panel and page have two more buttons: **Share** gives the file to colleagues to read, comment on or change ([Shared files](https://eggent.ai/docs/company.md#shares)), and **Approval** sends the version it holds now to colleagues for approval, in order ([Approvals](https://eggent.ai/docs/company.md#approvals)). A line above the file says when it is shared or on approval.

## A folder as one .zip {#zip}

The archive button on a folder (and on the top row, which stands for the whole project) downloads it as a single `.zip`: structure, Russian and other-language names and the executable bit are kept. The archive is built as it is sent, so a large folder does not load the workspace.

- Files that hold secrets are **left out**: `.env` files, `.mcp.json`, `auth.json`, key and certificate files (`.pem`, `.key`, `.p12`), cloud credentials (`credentials.json`, service-account keys, `kubeconfig`, `*.tfvars`) and folders made to hold them (`.ssh`, `.aws`, `.kube`) — also when you name such a folder yourself. After a download from an answer's card the page says how many were left out.
- So are dependencies and the agent's own working state (`node_modules`, `.git`, `.venv`, `.pi`). Links are never followed out of the folder, a file that also has another name somewhere else is left out, and a file that disappears or is swapped for a link while the archive is being sent is skipped rather than ending the download.
- The limit is **1 GB and 10 000 files** per archive; above that the button says so and you download parts of it. One archive is prepared at a time, so a second one asks you to try again in a moment.

## Files in the agent's answers {#in-answers}

When the agent mentions a file that exists, the path becomes a link — no need to hunt for it in the tree. Audio files (`mp3`, `ogg`, `wav`, `m4a` and others) play right in the answer: a play button, the duration and progress. Images the agent embeds in an answer are shown in the chat.

### The files an answer made {#produced}

When an answer made files, they are listed under it: the files it names, the files its tools wrote, and — when it ran commands and nothing else points at a result — what is new in the folder. Each row has **open** (for pages, PDFs and images), **download**, and, when Telegram is connected, **send to Telegram**, which sends the file to your own chat. With more than five files the rest are counted and **Download all as .zip** takes the lot.

The list is deliberately cautious: only plain files written during that answer, inside the folder it worked in, never the agent's own notes, skills or tools, never files that hold secrets. If a file is deleted later, its row disappears. Edits to files that already existed are listed only when the answer names them. What a project made for an [`@project` request](https://eggent.ai/docs/projects.md#ask) is listed under the answer of the chat that asked.

## File history {#history}

Every change to a document or text file in a project is kept as a version, whoever made it: you saving it in the editor, the agent writing it or running a command that rewrites it, an upload that replaces it, or the sync bringing a copy edited on your computer. A history begins with a file's first change — what the file held just before it is kept too; a file that has only been created or uploaded has nothing to go back to yet and takes no extra space. The clock button in the header of an open file (**History** on the file's own page) lists the versions, newest first, each with who made it: *You*, *The agent* with the chat it was working in, *Uploaded*, *Changed outside the editor* (the sync, the terminal or another program).

- **Compare.** Choose a version to see what changed from the one before it, or compare it with the file as it is now, or with any other version. **Text** shows the newer wording with the older words struck through, the way an edited document reads; **Lines** shows the older lines over the newer ones, numbered, which suits code. Unchanged parts are folded away, and the arrows (or Alt+↑ / Alt+↓) go from one change to the next.
- **Restore.** **Restore** brings a version back. What the file held before is kept as well, so a restore can itself be undone. The exception is a file that has since grown past 10 MB or cannot be read: the list says so above the versions, and a restore asks first, because what it replaces cannot be kept.
- **Download** saves any version as a file named after it, for example `contract (v3).docx`.

Documents (`.docx`, `.xlsx`, `.pptx`, `.odt`) are compared by the text inside them: paragraphs, table rows, slides, the rows of a sheet. Formatting is not compared. Pictures, recordings, archives and PDFs get no history, and neither do the agent's own notes and skills, dependency folders, files that hold secrets, or a company's shared folders (those are the company's files, not the workspace's).

Every version is kept for 30 days after a newer one replaced it, then one a day up to 90 days, at most 200 per file. The history counts toward the workspace's disk and never takes more than a quarter of it: past that, the versions replaced longest ago go first, and when the disk is nearly full the history shrinks to make room for the files themselves. **Settings → General → File history** shows how much it takes, clears what is older than a week or all of it, and turns it off. A file's own history can be deleted from its list.

The agent reads the history too: ask it what changed in a document since yesterday, or to go back to an earlier version. When a file is open beside the chat, the agent knows which one you mean — see [Chats](https://eggent.ai/docs/chats.md#open-file).

## Deleting {#delete}

The delete button on a file or folder deletes it after you confirm. Deleting a folder deletes everything in it. A file deleted here takes [its history](#history) with it. With [sync with your computer](https://eggent.ai/docs/file-sync.md) turned on, deleted files are kept in the sync trash for 30 days.

## Disk space {#storage}

In the cloud a workspace has a limited disk: 100 MB during the trial, more on a plan. [File history](#history) counts toward it as well. When the disk is three-quarters full, a warning appears in the sidebar. When it is completely full, the agent stops answering, but the **Files** panel keeps working — delete what you do not need and work continues from the next message. More in [Plans and balance](https://eggent.ai/docs/plans.md#storage).

On your own server the only limit is the machine's disk.

## Where the files physically live {#layout}

| What | Path inside the workspace |
| --- | --- |
| Project files | `data/projects/<project-id>/` |
| Orchestrator files | `data/projects/` (beside the project folders) |
| Chat attachments | `data/chat-files/<chat-id>/` |
| Versions of files | `data/versions/` |

The full layout is in [Workspace layout](https://eggent.ai/docs/workspace-layout.md).
