Create a project and connect its repository
A project is what an agent is pointed at. It lives in the active Workspace and it is the thing every other surface hangs off: the tasks you launch against it and their runs, the issues it imports and the backlog they feed, the workflows and automations that act on it, its own environment variables and container image, and its policy — who may work on it, how far unattended, what it may spend. Above all it carries the credentials the agents use: one git credential for the repository, and optionally one tracker credential for an issue source.
No agent runs without one. Creating a project is open to any Workspace member; most of what you can configure on it afterwards is not.


Create the project
Section titled “Create the project”-
Open Projects in the sidebar and press New Project. On a phone the create action is the round button at the bottom of the list. You land on
/projects/new. -
Fill in the four fields, in this order:
- Name — how the project appears in every list, and the word you type in
the web terminal’s
runcommand. Required. - Git Repo URL — required. Both URL forms are accepted; the placeholder
shows the SSH form,
ssh://git@git.example.com:2222/org/repo.git. - Git Provider — Forgejo (the default), Bitbucket, GitHub or GitLab. Changing it clears the credential below, so pick the provider before the credential.
- Git Credential — the picker lists only credentials that match the provider you just chose, each labelled with its kind: (SSH Key) or (Access Token). With no match it offers just No credential and a link reading Add credentials in Settings.
- Name — how the project appears in every list, and the word you type in
the web terminal’s
-
Press Create Project. You land on the new project’s page.
There is no branch field on the create form — the Default Branch is set
afterwards, in the project’s Configuration tab (below). Set it explicitly if
your repository’s default is not main: a branch that does not exist is one of
the three things behind the “Git clone failed” message, and it looks exactly
like a bad URL or a bad credential from the outside.
Import several repositories at once
Section titled “Import several repositories at once”If you are onboarding a whole organization rather than one repository, the projects board has an Import action next to New Project (on a phone, an icon in the top bar) that creates one project per repository in a single pass.
-
Press Import. You land on
/projects/sync, titled Import Projects. -
1. Select Provider — press Forgejo, Bitbucket, GitHub or GitLab.
-
2. Select Git Credential — pick a credential, then press Fetch Repos. Some providers need one more value next to the picker: Bitbucket wants the Bitbucket workspace name, and Forgejo and GitLab want the host, for example
https://git.example.com. GitHub needs neither. -
3. Select Repositories — tick the ones you want. Repositories that already have a project are shown greyed out and badged imported, so a second import cannot duplicate them; Select all takes only the importable remainder. Each row shows the repository’s default branch.
-
Press Import projects. Each selected repository becomes a project carrying its name, its clone URL, its provider and its default branch.
Connect an issue tracker
Section titled “Connect an issue tracker”Where a project’s issues come from is a separate, optional binding, and there are six possible sources: the four git forges’ own issues — Forgejo, GitHub, GitLab and Bitbucket — plus Linear and Notion.
A project you just created is already wired to the first kind: with no tracker set, its issues are the ones in the repository you bound. Setting a tracker replaces that source rather than adding to it — whenever Issue tracker source is Linear or Notion, that is where every issue read, comment and status transition goes, and the forge’s own issue list is no longer consulted. So leaving the field on None is a real choice, not an unconfigured state.
-
Open the project, then the Configuration tab, then the Repository & source row. The tracker block sits directly under the repository fields.
-
Set Issue tracker source. None (use git provider) keeps the forge’s own issues; Linear and Notion switch the source.
-
Identify the collection to read. Linear asks for a Team key — Linear’s own identifier for the group the issues belong to; Notion asks for a Database id.
-
Press Connect Linear or Connect Notion. This is a full-page OAuth authorization: you approve at the provider and come back to the project with a confirmation. Then pick the resulting connection under Tracker credential.
-
Optionally override the state names SupaCloud writes back when a task finishes — success, failure and in progress. Leave a field empty and the documented default applies; an empty failure means SupaCloud comments and leaves the item open.
-
Press Save at the bottom of the Configuration tab.
Binding a tracker makes its issues browsable in the project’s Issues tab and launchable: you can start a task straight from an issue, with the title and prompt seeded and the run linked back to it. See Launch a task from an issue.
Underneath the state names sits Enable issue-tracker auto-developer and a webhook secret. That is a different question — not where issues come from but whether SupaCloud works them on its own. Leave it off until you have read Choose the autodev mode.
Configure the project
Section titled “Configure the project”Everything else about a project lives in one place: the Configuration tab on
the project page (deep-linkable as ?tab=config, and the destination of both
the row kebab’s and the footer’s Settings). It is a single inline accordion
— there are no separate read-only settings tabs and no edit dialog any more.
It opens on a plain-language sentence describing the project’s current policy; each clause in it is a link that opens the row that owns it. Below that, a one-press Set up safe backlog automation shortcut seeds a known-good starting point, and every field it touches stays editable.
The seven rows:
| Row | What it holds | Where it is documented |
|---|---|---|
| Repository & source | Name, provider, Default Branch, repo URL, git credential — and the issue tracker above | This page |
| Who & how far | Autonomy level, effort, which agent profiles may take the work | Set the autonomy level |
| Approvals & merge | The concept and draft-PR gates, and the merge policy | Choose the autodev mode |
| Automation | The autodev mode, the classifier, the PR-review lane, the review loop | Choose the autodev mode, Run the backlog |
| Closeout | What an agent does at the end of every task, and memory governance | Configure the standard closeout, Manage memories |
| Guardrails | Environment scope, denied tools, required reviewers, budgets, concurrency, worker groups | Below, and Track usage and budget |
| Environment & build | Project environment variables and the project’s container image | — |
One Save at the bottom persists the project itself. Three controls save independently through their own endpoints — the concurrency limit, the image build, and the environment variables — so pressing their own buttons is what commits them.
Cap what the project may spend
Section titled “Cap what the project may spend”The Guardrails row carries the project’s own money limits, so one noisy repository cannot drain a Workspace budget.
- Daily budget cap ($) and Monthly budget cap ($) are project totals. They bind every task launch against the project — hand-launched, backlog and PR-review alike, not only backlog runs — and they compose under the Workspace budget: both must allow the spend. Leave a field blank for no project cap.
- The backlog-specific limits sit alongside them: a backlog daily budget, a backlog concurrency cap and a required reviewers bar, which apply only to autonomously dispatched work.
Both caps are a hard stop, not a warning. When the day’s or the month’s spend has reached one, the next launch is refused outright with “Project daily AI budget exhausted” or “Project monthly AI budget exhausted”, naming the figure and the cap; raise the cap or wait for the window to roll over. The two windows are independent — either one being full is enough to refuse.
Only a Workspace owner or admin may set them, and only on an existing project — they are not fields on the create form. For the Workspace-level budget these sit under, and for reading what has actually been spent, see Track usage and budget.
Keep a repository and the Workspace in sync
Section titled “Keep a repository and the Workspace in sync”This is worth naming because the words look alike and the features are not: Import Projects (above) reads many repositories once, to create projects. Repo Sync binds one repository to the Workspace as a durable, two-way home for what you build inside SupaCloud. It is Workspace-level, not per-project, and it lives under Settings → Data & sync → Repo Sync — where you set the repo URL, the branch and a credential Resource, and get Push to repo and Pull from repo buttons plus a log of recent sync activity.
What travels: workflows, scripts, apps, resources and
memories, each serialized to a file in its own directory. Resource secrets
and workflow trigger secrets are stripped on the way out; personal-scoped
memories are never serialized and a personal memory in the repository is
refused on the way in.
Three things about it are worth knowing before you press either button:
- Sync direction is a setting. Bidirectional (the default) allows both; Repo only makes git the source of truth and disables Push; UI only makes the UI the source of truth and disables Pull. The disabled button carries a tooltip saying which.
- Conflicts resolve last-write-wins, per item. Pull from repo opens a Pull preview first, listing what would be created, updated or skipped and showing each conflicting file with both versions and a badge naming the winner. Per file you can press Use remote (override) to force the repository’s version, or Keep local, which just confirms the default outcome and changes nothing. Apply pull then commits the rest.
- Deletions do not travel — with one exception. For workflows, scripts,
apps, resources and memories, removing a file from the repository does not
remove the row on pull, and deleting an item in the UI does not remove its
file on push; tidy up on both sides yourself. The exception is the shared
code library (
lib/): a pull does remove a file you deleted in the repository, because a shared library whose deletions never arrive is a cache rather than a source. A library file you edited more recently in the interface survives that prune. See Share code between code nodes.
Push uses a username/token pair read from a Workspace Resource you nominate, so give it an HTTPS repository URL; leaving the credential empty is only for a public repository. Configuring and running sync requires Workspace admin rights. Auto-push is an opt-in toggle that pushes workflow, script and app changes on a short delay; resource and memory edits, and every deletion, still need a manual push. How memories in particular travel is covered in Manage memories.
Archive or delete a project
Section titled “Archive or delete a project”Two different actions live in the project row’s kebab menu on the projects board, and only one of them is reversible.
Archive project takes it out of the active board without destroying anything. It reappears under the Archived tab, where Restore project brings it back. Archiving is not merely cosmetic: an archived project is excluded from the autonomous backlog scan, so it stops picking up and dispatching work of its own accord. No confirmation is asked, because nothing is lost. This is what you want for a repository you are done with for now.
Delete asks “Are you sure you want to delete this project?” and is permanent. It is worth knowing precisely what goes and what stays:
- Destroyed with the project — its workflows (and the runs of those workflows), its backlog items, its automation configuration, its project environment variables, its scheduled reports and its agent permission grants.
- Kept, but detached — its tasks and their agent runs, its task schedules, its cost and outcome records, its audit history and its project-scoped memories. These survive with the project link cleared, so the record of what happened remains even though the project that framed it is gone.
- Untouched — the repository and the issue tracker. No commit, branch, issue or pull request is changed; SupaCloud only drops its own side.
See also
Section titled “See also”- Get started with SupaCloud — the tutorial that hands off to this page
- Your first agent run — what to do with the project you just made
- Manage secrets in the UI
- Launch a task from an issue
- Choose the autodev mode
- Workspaces and Organizations