Beetl Docs
Troubleshooting

The first-run trap

A new tenant has no object store, and nothing works until it does.

This is the single most common way a first session with Beetl stalls. It looks like a broken product. It is a missing setup step.

Symptom

You sign in to a brand new tenant and try to do the obvious first thing. Upload a file, point a webhook at Beetl, or run a pipeline. It fails.

422 OBJECT_STORE_NOT_CONFIGURED

The same error blocks every write path: ingestion, dataset creation, pipeline destinations and runner dispatch. The Data Catalog and the file-upload wizard both render a "no object store configured" banner instead of their normal empty state.

Cause

A new tenant is provisioned with no storage at all. Tenant creation deliberately provisions nothing: a fresh tenant is created with an empty object-store list and no default.

There is no platform bucket to fall back to. Beetl is bring-your-own storage for every tenant, hosted included, so until someone registers a store there is nowhere for a single byte to land.

Fix

Open Settings, then the Tenant tab

The banner links there directly.

Register an object store

Give it a name and its base URL, plus the credentials it needs. S3-compatible storage is the reference implementation.

Wait for validation

Registering runs a live validation round-trip against the store: a write, a read, then a delete. A store that fails this is not accepted, which means a store that registers successfully is one Beetl can actually use.

Nothing else to do

The first store you register is promoted to default automatically. Retry whatever failed and it will work.

If you are not a TenantAdmin

You cannot self-serve this. The three mutating object-store endpoints are the only role-gated handlers in the server, and they return:

403 TENANT_ADMIN_REQUIRED

So a non-admin who happens to be the first person into a new tenant reaches a genuine dead end. The banner points at a page whose actions are closed to them.

What you can do:

  • Reading the list of registered stores is open to any authenticated user, so you can confirm for yourself that the list is empty rather than guessing.
  • Ask a TenantAdmin in your organisation to register one. Roles are set in Zitadel, not in Beetl, so if nobody in the tenant holds TenantAdmin the fix starts there.

Once it is set up

Registering further stores is supported, and they do not become default. Switching the default only affects new datasets: existing ones stay on the store they were created against.

There is no delete or deactivate for a registered object store. Register, re-validate and select-default are the only operations available today.

On this page