What do you want to do?
Eight tasks, each in a few real steps, with the limit you should know first. Pick one on the patch bay.
Create a workspace
Pick the organisation
A workspace belongs to one organisation; that decides its network and its egress policy.
ConsoleOrganisationsacmeWorkspaces
Name it and choose an owner
The owner is the only member who can open it. Add the repository it works on, and turn on the browser IDE if they need it (about 1 GB of RAM more).
Or create it on the host
$ bin/workspace-agent create --tenant acme --workspace dev01 \ --owner dev@example.test --repo owner/name --ideOpen it
The owner signs in and opens it from the portal.
PortalHomeacme / dev01
Defaults: 2 GB of RAM and 2 CPUs per workspace, and an idle workspace suspends after 30 minutes.
Connect an AI provider
Choose the models
An operator names the models behind each tier: Lite, Economy and Power.
ConsoleSettingsAI agents
Add organisation keys
Add an organisation's Gemini key, or its Codex and Antigravity sign-ins for the CLIs.
OrganisationsacmeAI keys
Decide who may use which provider
The chat speaks the Anthropic and OpenAI dialects; Gemini works through its OpenAI-compatible endpoint. An organisation decides which providers each member may use.
Keep keys out of containers
At the default Guarded security level, the Claude credential stays on the host behind the model proxy, and each workspace gets a key that is worthless off the host.
Only Anthropic is fully brokered. The key broker for other providers is off by default, the Antigravity CLI in the workspace does not use it, and some AI APIs can be reached directly.
Configure egress
Watch first
Egress ships in observe: the proxy decides and logs each connection and still lets it through. The direct-GitHub refusal, the DNS filter and the copy-port controls refuse in every mode, observe included. Let your team work for a week.
Build the allowlist from what they reached
$ bin/egress-proxy summary --days 14Add what is missing
Hosts are comma separated; a leading dot means “and subdomains”. An organisation's list is added to the host's and can never remove from it.
$ bin/policy set --scope tenant --target acme \ --key egress_allowlist --value 'registry.example.org'Promote to deny
This takes effect on the next connection, with no restart. Flip it back the same way.
$ bin/policy set --key egress_enforce --value deny
Two controls: the firewall makes the proxy unavoidable; the allowlist is what filters. Deny decides by hostname, does not inspect payloads, and npm publish to an allowed registry can still upload code.
Turn on the validation gate
Approve at least one check
The gate runs the organisation's approved checks on the exact commit being pushed.
OrganisationsacmeChecks
Require a passing validation
Turn the gate on for one organisation, from the host.
$ bin/policy set --scope tenant --target acme \ --key git_validation_gate_enabled --value trueValidate, then push
In the workspace's Git panel, Validate runs the checks on this commit, and Push goes through the broker.
Read the record
Every allowed push is written to the audit log with who wrote each commit: agent, console or person, and
unattributedwhen the host has no record.
No approved check means every push is refused. The gate is off by default and has not yet been seen on a real GitHub push.
Grant governed runs
Know the default
Governed runs are background agent runs. They are off for every organisation until an admin grants them. The console still labels the setting “Live execution”.
Prepare the evidence on the host
$ bin/deployment-readiness --prepareGrant it for one organisation
The grant is only accepted against a proven evidence record.
OrganisationsacmeSettingsLive execution
Re-grant after every commit
A grant is tied to the commit it was proven on. Deploy a new commit and execution stops until you prepare and grant again.
Measured with Claude Code only. A grant is tied to one commit and lapses with the next deploy, by design.
Attach a desktop IDE
Turn on Desktop IDE attach for the organisation
The switch warns that code can leave the platform through a desktop client. Read it.
OrganisationsacmeSettingsDesktop IDE attach
Register your public key
WorkspaceDeveloper toolsKeys
Take a token from the Connect pane
It is shown once and lasts 12 hours. It is never stored in the browser.
WorkspaceDeveloper toolsConnect
Download the helper and connect
Host acme-dev01 User dev ProxyCommand workspace-ssh --url https://kodela.example.com/ws/acme/dev01/ssh \ --token-file ~/.config/kodela/acme-dev01.tokenOpen it in VS Code or JetBrains
VS Code Remote-SSH or JetBrains Gateway, pointed at
acme-dev01. JetBrains also needs File transfer set to upload.
Off by default. Your host needs an https address a desktop client can reach. No port is published; the route runs through the front door.
Export audit to a SIEM
Check the chain is intact
$ bin/audit-log verifyExport in your SIEM's format
ceffor Splunk and Sentinel,leeffor QRadar,json,csv, orsyslog(RFC 5424).$ bin/audit-log export --format cef --stream egress --out egress.cefOr export from the console
ConsoleAudit logExport for SIEM
Export is a file you ship. Nothing pushes to a SIEM or copies the record off the box yet. Retention is 90 days by default, and an organisation can only raise it.
Why is it stuck?
Open the tab that asks the question
Organisationsacme“Why it’s stuck”
Read the five gates
Chat dispatch allowed, runtime permitted, execution grant and evidence, session, and model. The first red gate is the reason.
Fix that one, then re-check
Each row names its own remedy and where to apply it. Readiness on the host says the same thing from the other side.
$ curl -s http://127.0.0.1:5000/api/readyz
A refusal is a sentence. If a gate is red and its row does not say why, that is a bug worth reporting.
Before you rely on these
- Several of these are off by default: the validation gate, Desktop IDE attach, governed runs and the key broker. Each is off until an admin turns it on.
- Egress deny is a setting, not a default. A fresh host observes and logs; it does not block.
- The shared front-door password is not tied to a person until “require identity” is on. Turn it on once everyone has an account.
Next
Verified against the main branch, 28 Sep 2026.