Project Configuration
Local Configuration
Section titled “Local Configuration”TMA.sh stores local project settings in .tma/project.json at the root of your repository. This file is created by tma init or tma link.
tma init writes:
{ "projectName": "my-app"}tma link writes:
{ "projectId": "11111111-2222-4333-8444-555555555555", "orgId": "66666666-7777-4888-8999-000000000000", "projectName": "my-app"}Keep .tma/project.json in version control, but ignore local runtime artifacts:
.tma/*!.tma/project.jsonDashboard Settings
Section titled “Dashboard Settings”These settings are configurable from the TMA.sh dashboard or via the platform API.
| Setting | Default | Description |
|---|---|---|
name | — | Project display name |
slug | — | URL slug (used in URLs and API) |
subdomain | — | Derived from slug (lowercase, special chars replaced with hyphens) |
repoUrl | — | GitHub repository URL |
branch | main | Branch to deploy from |
installCommand | npm install | Dependency install command |
buildCommand | npm run build | Build command |
outputDir | dist | Build output directory |
autoDeploy | true | Auto-deploy on push to main |
previewPrNumber | null | Selected pull request number used as the staging preview target |
The slug is used as a project identifier in URLs and the API, while the subdomain is a normalized version of the slug (lowercase, special characters replaced with hyphens). Both exist as separate database columns.
Only one staging preview target can be selected at a time. Set previewPrNumber to null to disable preview deployments.
Your project is served at https://{subdomain}.tma.sh for static assets and https://{subdomain}--api.tma.sh for API routes.
Build Output Requirement
Section titled “Build Output Requirement”TMA.sh deploys static SPA output. Your configured outputDir must contain an index.html file after the build command completes.
Subdomain Restrictions
Section titled “Subdomain Restrictions”There are over 60 reserved subdomains that cannot be used as project slugs. These span several categories including:
- Core platform:
api,app,dashboard,admin,www - Environments:
staging,preview,dev,test,demo,sandbox,internal - Auth/accounts:
auth,login,signup,account,sso - Static/CDN:
cdn,assets,static,media - Docs/support:
docs,help,support,status,blog - Mail/DNS:
mail,smtp,mx,ns1,ns2 - Network/infra:
proxy,vpn,wpad,git,svn,ssh,sftp - API protocols:
graphql,ws,wss,rpc,grpc,webhook,webhooks - Observability:
metrics,monitoring,logs,analytics,telemetry,health,healthcheck,ping
If you attempt to create a project with a reserved slug, the API will return an error. Choose a different name or prefix your slug (e.g., my-app instead of app).