Data export and portability
Your code and your data are yours. Canvas is built so you can take everything out at any time, in standard formats you can run elsewhere. This page explains the three ways to get your code out, how to export your application data, and how a full eject works when you want to leave entirely.
Getting your code out
Section titled “Getting your code out”Every app you build on Canvas has a standard Git repository with your complete history. That repository lives on Canvas’s internal Git infrastructure, which, for security, we keep internal and do not expose to customers directly. Instead, Canvas gives you three built-in ways to get a full copy of your code, each producing an ordinary Git repository you can read, run, or host anywhere:
- Download a ZIP archive of a single app’s repository, on demand.
- Mirror a repository to your own Git host (GitHub, GitLab, and the like), kept in sync automatically.
- Eject the whole organization, when you want every repository at once as part of leaving (see Leaving Canvas).
The code you get is clean and standalone in every case. It contains your application and nothing else: no references to the Canvas platform, no proprietary runtime, no hidden dependencies on our tooling.
Download a repository as a ZIP archive
Section titled “Download a repository as a ZIP archive”Use this for a quick, complete copy of one app’s code.
- Open the app and go to its Settings.
- Find Download repository and start the export.
- Canvas builds a ZIP archive and gives you the download.
The archive includes the repository’s .git directory, so you get the full
commit history, not just a snapshot of the latest files. Unzip it and it is
immediately a working Git repository: run git log, create branches, or push it
to another host.
Mirror a repository to your own Git host
Section titled “Mirror a repository to your own Git host”Use this when you want your code to land continuously in your own GitHub, GitLab, or other Git host. Canvas pushes each change to your repository on a daily schedule, so your mirror stays current without any manual steps.
- Create an empty repository on your own Git host to receive the mirror.
- In the app’s Settings, open Push mirror.
- Copy the public key shown there. This key is unique to your platform and identifies Canvas to your Git host.
- Add that key to your target repository as a deploy key with write access (on GitHub, under Settings, then Deploy keys; on GitLab, under Settings, then Repository, then Deploy keys).
- Paste your target repository’s URL into the push-mirror setting and save.
Canvas then mirrors the repository to your host once a day. A sync status panel lists every sync job that has run, with its result and timestamp, and shows the error if a job fails, for example when the key or URL is misconfigured. You can also re-run a sync manually from there at any time.
Exporting your application data
Section titled “Exporting your application data”Each of your apps runs against backing services that belong to you alone: a PostgreSQL database, an object store, and a cache, provisioned per environment. Because they are dedicated to your organization, your data is never mixed with another customer’s.
You can export the contents of these services in standard formats: a SQL dump for the database and the raw objects from the object store. The export covers every environment, so development, staging, and production data come out together.
Leaving Canvas (eject)
Section titled “Leaving Canvas (eject)”When you want to leave entirely, eject your organization. This is the third way to get your code out, and the start of a clean exit.
- An Org Admin or Executive opens the organization Settings.
- Choose Eject organization.
- Canvas packages every repository across all of your apps (as standard Git repositories with full history) into a single org-wide archive, alongside your application data.
- When the package is ready, Canvas gives you a secure, time-limited download link. The link expires after a short window, so the export stays private to you.
After you have your copy, Canvas tears down your footprint: we remove your repositories, your isolated environments, and your backing services, so nothing of yours remains on our infrastructure. Because the code is standalone and the data is in standard formats, you can stand the same applications back up on your own infrastructure or another host.
Where your data lives
Section titled “Where your data lives”All of this runs on servers in Germany and is handled in line with the GDPR. Your code and data never leave that footprint, whether they sit in Canvas or travel out in an export.