Skip to Content
Start HereUpload Your First Run

Upload Your First Run

Use this page when local tests already work and you want a shared run history in Cloud.

Before you start

  • The CLI is installed
  • glubean run already works locally
  • You have access to a Glubean Cloud project

1. Create a project token

In Glubean Cloud, open your project and go to Settings → Tokens.

Create a token with the runs:write scope. Project tokens start with gpt_. Copy the value now — Glubean won’t show it again.

For when to use a project token vs a user API key, see Tokens.

2. Store the token

Local development

Put the token in .env.secrets (must be gitignored), and the project ID in .env (committed):

# .env.secrets — NOT committed GLUBEAN_TOKEN=gpt_your_project_token
# .env — committed; shared by every contributor GLUBEAN_PROJECT_ID=prj_abc123

The project ID isn’t sensitive and belongs in the repo (.env). The token is sensitive and goes in .env.secrets. Because it’s an env var, every run mode — glubean run --upload, glubean ci run --upload, or a filtered/tagged run — uploads to the same project.

Working on multiple Glubean projects from one laptop? See Multi-workspace setup.

CI

Store the project token in your provider’s secret store and inject it as the GLUBEAN_TOKEN env var. The CLI auto-picks it up — no glubean login step in CI.

GitHub Actions example:

- name: Upload Glubean run env: GLUBEAN_TOKEN: ${{ secrets.GLUBEAN_TOKEN }} run: npx glubean ci run --upload

The project ID is in .env, so no second secret is needed.

3. Upload a run

npx glubean ci run --upload

You can still target a file, folder, filter, or tag:

glubean run ./tests/auth.test.ts --upload glubean run --filter "login" --upload glubean run --tag smoke --upload

4. Open the run

After upload, the CLI prints a Cloud URL. Open it to inspect:

  • Run summary
  • Test results
  • Logs, traces, and metrics

Credential lookup order

The CLI uses the first matching credential source for GLUBEAN_TOKEN, GLUBEAN_PROJECT_ID, and GLUBEAN_API_URL:

  1. --token / --project / --api-url CLI flags
  2. GLUBEAN_TOKEN / GLUBEAN_PROJECT_ID / GLUBEAN_API_URL env vars
  3. .env and .env.secrets files in the project root
  4. ~/.glubean/credentials.json (written by glubean login)

The chain is per-field — for example, the token can come from an env var while the project ID comes from .env. This is what makes the recommended CI pattern (1 secret) work. Keep token values in .env.secrets (gitignored) — a literal GLUBEAN_TOKEN in the committed .env is read, so never commit one there.

For project ID, a profile’s upload.projectId in glubean.yaml is also honored when you run that profile — and it takes precedence over GLUBEAN_PROJECT_ID. A profile can also set upload.tokenEnv (the name of the env var holding its token) so different profiles upload to different projects. See Tokens for the exact order and the full config reference at Configuration.

Next

Last updated on