Sign in
ase acts as you, in your studio, with your role. On your machine you sign in once with a code. In CI, the job proves itself with a release credential instead.
On your machine
ase login
ase prints a link and a short code. Open the link, sign in to the studio console as you usually do, check that the code matches and choose Approve. ase then holds a session for 12 hours, with the studio and role you had when you approved it.
ase studio whoami # your studio, role and permissions, as the console has them now
ase logout # forget the session on this machine
The session is stored in session.json in your config folder, readable only by you:
| OS | Folder |
|---|---|
| Windows | %APPDATA%\ase |
| macOS and Linux | ~/.config/ase |
Set ASE_CONFIG_HOME to use another folder.
ase checks the session with ASE Brain before each command, so a session your studio revoked stops working at once. If ASE Brain can't be reached, a session that was valid keeps working for up to an hour.
Working offline
Developing a game never stops at the sign-in. ase editor, ase sdk ensure, ase sdk apply and ase sdk status work without a sign-in or a network, using the SDK already on your machine. They tell you why they're offline. Only a project that needs an SDK version you haven't downloaded yet is blocked.
In CI
A CI job has no session. It proves which studio it works for with a release credential, which ase reads in this order:
ASE_RELEASE_KEY: a release key fromase studio key.ASE_BRAIN_ID_TOKEN: an OIDC token your CI puts in the environment, such as GitLab'sid_tokens.- GitHub Actions' own OIDC token, when the job has
permissions: id-token: write.
Tokens are minted for the audience https://asebrain.com.
GitHub Actions
Trust your studio's GitHub Actions once:
ase studio trust --preset github
From then on, any run on main of a game's own repo can release that game. Use --branch to trust another branch. The workflows ASE Brain keeps in your repo already ask for id-token: write.
GitLab CI
ase studio trust --preset gitlab
ase studio trust --preset gitlab --issuer https://gitlab.example.com # self-hosted
Then give the job a token:
release:
id_tokens:
ASE_BRAIN_ID_TOKEN:
aud: https://asebrain.com
script:
- ase release publish --game neon-drift --version 1.2.0 --target brain --builds builds --notes notes.md
Any other CI
Make a release key and store it as the job's ASE_RELEASE_KEY secret:
ase studio key ci
ase prints the key once. ASE Brain keeps only its hash, so store it straight away.
What a trust allows
A trust lets CI release only your studio's games, and each game only from its own repo. A run of one game's repo can't release another game, and a trust can never cover every repository on a host. Releasing still needs the trust: a credential alone proves which studio a job is for.
Pointing ase elsewhere
These are for testing against a local ASE Brain. You don't need them for normal use.
| Variable | Points ase at |
|---|---|
ASE_BRAIN_API |
Another registry API |
ASE_BRAIN_DOWNLOADS |
Another downloads origin |
ASE_BRAIN_BACKOFFICE |
Another studio console API |
ASE_BRAIN_MCP |
Another MCP server, for ase skill install |
Each must be HTTPS, or HTTP on loopback.