# Your app's files

> The Files tab of a bot or app: see what it keeps under /data, upload and download files, edit text files, extract a zip, bring files back from a backup, connect with SFTP, and why some files are read only.

Source: https://fadehost.com/docs/app-files/

The **Files** tab of a bot or app shows what it keeps under `/data`: the files your code writes, the code we checked out from your repository, and the folders the runtime manages. You can upload, download, edit, rename and delete your app's own files there, extract a zip and bring files back from a backup, without a push to GitHub. You can also reach the same files from an SFTP app on your computer.

**Files comes with every paid plan.** On the free plan the tab is there but locked, with the way to a paid plan. See [Plans and limits](/docs/app-hosting/#plans-and-limits).

## What the tab shows

Each folder is split in three:

| Part | What is in it | What you can do |
| --- | --- | --- |
| Created by your app | Files your code wrote, and files you uploaded. | Everything: open, edit, upload over, rename and delete. |
| From your repository | The files of the commit that is deployed. | Read and download. Change them in your repository and push; the deploy brings them in. |
| Managed by FadeHost | Dependencies and caches, such as `node_modules`, `venv` and `.cache`. | Read and download. Hidden until you choose **Show** under the table. |

A lock beside a name means the file is read only. The line under the table shows how much of your plan's disk the app uses, and opens [Plan and usage](/docs/app-plan-and-usage/) when you select it.

## Upload, download and edit

- **Upload** sends files from your computer into the folder you are looking at. You can also drop files, or a whole folder, on the table. A file with the same name is replaced.
- **Download** saves one file. **Download as zip** saves a folder, or every file and folder you selected, as one zip.
- Select a text file up to 1 MB to open it in the editor, and **Save** (or press Ctrl or Cmd and S) to write it back. A file from your repository opens read only, with a link to edit it on GitHub.
- **New file**, **New folder**, **Rename** and **Delete** do what they say, on your app's own files.

Most apps read their files when they start. After you change something, the panel offers **Restart** so the app picks it up.

## Extract a zip

Upload the zip, then choose **Extract here** in its menu, or right-click it (on a phone, press and hold). Its files and folders go into the folder the zip is in.

- A file that is already there stays as it is, unless you tick **Replace files that are already there**. Files from your repository are never replaced.
- Files that would land in a folder FadeHost manages, and links, are left out.
- A zip can hold up to 20,000 files and must fit in the disk your app has free. A zip with a password, or one made with an unusual kind of compression, cannot be extracted here: unpack it on your computer and upload the files.

While it works, the panel shows how far it got, and **Cancel** stops it. When it is done, it says how many files came out and what was skipped, and why.

## Restore from a backup

When your app has backups, you can bring back earlier versions of its files without restoring the whole app. Choose **Restore from a backup** in the menu above the table, or **Restore an earlier version** in a file's or a folder's menu. Pick a backup, open the folder you need, tick what to bring back, and choose where it goes:

- **Put them back where they were**: the backup's copies replace the files there now.
- **Into a new folder**: they go into a new folder named for the backup's day, such as `restored-2026-10-25`, and nothing is replaced.

Files added since the backup stay as they are. Files from your repository and links are left out, and so are databases while the app runs. While it works, the panel shows how far it got, and **Cancel** stops it.

Backups are switched on in the **Backups** tab, which is also where you put the whole app back as it was. See [Backups](/docs/app-hosting/#backups).

## Connect with SFTP

You can reach the same files from an SFTP app on your computer, such as FileZilla, WinSCP or Cyberduck. Choose **SFTP** above the table to see your login:

| Field | What to enter |
| --- | --- |
| Host | The address shown, such as `sftp://nova.fadehost.net`. |
| Port | `2022` |
| Username | Your own username for this app, such as `app-k3x9q2m7ra`. |
| Password | Choose **View** to see it. **Reset** makes a new one. |

In FileZilla, type them into the bar at the top and choose **Quickconnect**, or add them as a site in the Site Manager with SFTP as the protocol. In WinSCP and Cyberduck, choose SFTP and type the host without `sftp://`.

- The login is yours alone: everyone on the team gets their own, and someone who leaves the team can no longer connect.
- The rules of the tab apply: files from your repository stay read only, `.git` is never shown, a database cannot be replaced while the app runs, and what you upload counts against your plan's disk.
- An SFTP app that sits idle for 15 minutes is disconnected, and logs in again when you do something. After a reset, SFTP apps that are connected need the new password.

Changes made over SFTP show in the app's activity, and the next start says what changed, as it does for the tab.

## Databases and a running app

A database file (`.db`, `.sqlite` and the like) cannot be replaced or deleted while the app runs, because changing one under a running app breaks it. Stop the app first; the tab says so when the folder holds one. A download asks first while the app runs: stop it for a clean copy.

## What is never shown

Your repository's `.git` folder, and the deploy key we keep for a private repository, are never shown and cannot be changed. The folder your code is checked out in, `/data/app`, cannot be deleted or renamed.

## On a team

Team members with full access use the tab like the owner, each with their own SFTP login. Members with read access do not see it. [Team sharing](/docs/discord-bot-hosting/#team-sharing) has the access levels.

## Need help?

Open a ticket from the panel, or reply to any of our emails, and we will take a look.
