Create and sync a project
Use the three-step UI flow to define a repository and its bounded runtime contract.
Prepare Git first
In Setup, save a Git display name and email. This is an author identity, not repository authentication. For a private HTTPS repository, create a token in Credentials and select it during project setup. The raw token is encrypted and is not returned to the browser.
Repository, directory, and runtime
- Repository and branch: use an HTTPS URL for HTTPS mode and fetch remote branches before choosing one.
- Directory: select the application directory inside the repository, such as
/or/apps/api. It cannot escape the repository, use backslashes, or contain duplicate slashes. - Internal port: Portal can reserve an available port automatically after checking other project assignments and host listeners.
- Runtime: Node.js, Bun, or trusted Docker Compose. The runtime determines the remaining fields.
Detect App safely
In step 2, choose Detect App after selecting the branch and directory. Portal makes a shallow checkout only to read small metadata files; it does not execute repository code. A valid Compose file is suggested before Bun or Node. A Dockerfile alone is evidence to review, not a Docker Compose deployment contract. Review the proposed runtime, service, and named scripts, then change any field that is not right for the project.
Save and sync
After review, choose Save and sync source. A successful sync records the project without erasing existing release history or encrypted environment. A failed sync leaves an active release unchanged.
Current repository limitation
The form shows SSH as a future option, but deploy-key generation, registration, rotation, and revocation are not implemented. SSH projects are intentionally blocked until that workflow exists. Use a public repository or HTTPS with a saved token today.