Skip to main content

What a project is

A project is the group of instances in one organization that share a config repository. It stores shared settings and gives the dashboard and CLI one place to inspect or update its instances together. Think of the distinction between a Fly App and its Machines: the project is the group; an instance is an independently managed unit. Docker Compose also uses a project to group resources, but a Tinfoil instance can itself run multiple application containers inside one enclave. These are naming parallels, not equivalent networking or scaling models.

Creating a project

A project is created implicitly when you create the first instance from a repository, or create its project-secret namespace. There is no separate tinfoil project create step. Use tinfoil container create to create an instance, not to import source code. A config repository discovered through the GitHub App is a source, not proof that you have a managed project or a running instance. The project is the home for its instances and shared settings; the source editor manages config PRs and releases. Publishing a source release does not deploy it. In Containers → Projects, the Container projects page lists managed projects separately from Available configurations. Set up project guides you through source setup; the group itself appears after its first instance or project secret. Open a project to inspect its instances, source connection, hold default, secrets, and releases. To create from a published tag, choose Create instance from this release beside that tag.
Dashboard view of a project showing aggregate instance counts

A project for the hello-world example with two running instances.

Each instance in a project is an independent enclave with its own name, status, resources, domain, and lifecycle. A project does not add load balancing or automatically update its instances when a release is published. The dashboard shows each project with aggregate counts for running, deploying, failed, and stopped instances.
Dashboard view of a project expanded to show individual instances

Both instances run the same repo and tag but have different names.

Project secrets belong to this namespace. They are available only to instances of that project and move with it when the repository is renamed. If Tinfoil merges an existing destination namespace for the same repository, resolve duplicate secret names before the rename can complete. A destination belonging to a different repository is isolated and never merged.

Inspecting a project

Use either the project UUID or its owner/repo name:
Pass -o json for machine-readable output.

Project settings

To hold new versions for review by default on every update of this project:
New projects start with hold_by_default=false. Individual instance updates, edited-config updates, and batch project updates inherit it. An explicit --hold=true or --hold=false overrides it for that operation only, without changing the project setting. Creates and deploys are never held. See Holding an update for review. Manage secrets for the same project from its Project secrets section under Containers → Projects in the dashboard. See Secrets & environment variables for scope and naming rules.

Updating every instance

See Updating to update every instance, or a selected set, to the same release.

Creating another instance

Open the project’s menu in the dashboard and choose New instance from this config, or run tinfoil container create with the same --repo. Each instance is managed on its own; there is no shared endpoint across instances.