Beetl Docs
Troubleshooting

Known limitations

Things that will bite you, listed before they do.

Everything on this page is true as of the current release. Struck-through items do not exist. They are listed rather than omitted, because finding out in week one is worse than reading it here.

Notification and alerting

CapabilityStatusWhat it means in practice
Email alertsDoes not existNothing in Beetl can send you a message.
Slack alertsDoes not existSame.
Outbound webhooksDoes not existThere is no notification domain or provider anywhere in the server.

An Automation that finds a problem sets needs_attention and stops there. Someone has to open Beetl and look. The same applies to pipeline failures, ingestion errors and data-quality problems. In-app toasts are the only signal, and they only exist while you are looking at the page.

Query results and evidence

CapabilityStatusWhat it means in practice
7-day result retentionEnforcedAd-hoc query results expire silently after 7 days.
Pin a resultDoes not existYou cannot keep one past the clock.
Save as reportDoes not existRe-run the query, or export it, before it goes.
Persisted chart specsDoes not existA chart you configured on an ad-hoc result is not saved with it.

The consequence people hit first: an Automation report outlives its own evidence. The report persists, its linked query results expire on the normal 7-day clock, and the links go dead.

Three fully built page families are unreachable from any navigation surface. The routes resolve, but nothing links to them.

/web/connections
/web/data-sets
/web/pipelines

You have to type the URL. This matters more than it sounds, because two things live only on the connection detail page: Reassign Connector, and the uploaded-file card with its Replace control. Day-to-day connection work is expected to happen through the Data Landscape graph on the home page instead.

The status page at /web/status is also linked from nowhere.

Export and BI

CapabilityStatusWhat it means in practice
CSV export of a query resultWorksThis is the only export format in the product.
Parquet, Excel, JSON exportDoes not existTake CSV, or read the data over Flight SQL.
Dataset exportDoes not existExport is per query result only.
Report exportDoes not existAutomation reports are Markdown in the UI.
In-product dashboard builderDoes not existDashboards are authored in Superset, not in Beetl.

Embedded Superset gives you saved, shareable dashboards, but authoring happens over there and an operator has to publish a dashboard and enable embedding before it appears in Beetl. There is no path from a query result or an Automation's evidence into a dashboard.

Datasets and lineage

CapabilityStatusWhat it means in practice
Bronze / Silver / Gold tiersConvention onlyA tier is a label. Nothing enforces a Bronze to Silver to Gold DAG.
Data Landscape graphWorksAn entity graph over connections, datasets and pipelines. Not a tier lineage graph.
Per-cell lineagePartialDrill-down to contributing records where a deterministic path can be constructed.
Dataset rename or metadata editingDoes not existThe catalog is read-only.
Row counts, byte sizes, freshnessDoes not exist in any API responseYou cannot see how big or how stale a dataset is from the product.

Pipelines and scheduling

CapabilityStatusWhat it means in practice
Time travel by version or timestampBackend onlyIt exists in storage. There is no UI and no version-history or rollback surface.
Automation schedule editorWorksPlain-English builder, 6-field cron escape hatch, IANA timezone, 15-minute minimum.
Connection schedule editorDoes not existThe command exists in the domain but no endpoint calls it. The schedule is displayed read-only.
Connection editing after creationDoes not existOnly table selections and connector reassignment can be changed.
Pipeline schedule editorDoes not existThe builder shows the schedule read-only.
Ingestion run historyDoes not existNo jobs page and no per-connection run list. Failures are not visible to you.

Collaboration

CapabilityStatusWhat it means in practice
Workspace-owned AutomationsWorksThe one shared object. It survives its creator leaving.
SharingDoes not existChat sessions, query results and API keys stay creator-scoped.
CommentsDoes not existNo annotation anywhere.
Team featuresDoes not existNo groups, no assignment, no ownership transfer.

Roles and access

CapabilityStatusWhat it means in practice
RolesTenantAdmin and TenantUserTwo roles, no custom roles, no groups.
Role gatingOne gateObject-store mutation in Settings is the only role-gated action in the server.
Role gate on automations, pipelines, connections, datasets, API keysDoes not existAny authenticated user in the tenant can create and delete them.
Cross-entity audit feedDoes not existThe event store has the answer, but the product cannot tell you who deleted a dataset.

API keys and programmatic access

CapabilityStatusWhat it means in practice
Scopesread and writeChecked at tool dispatch.
ExpiryDoes not existA key is valid until revoked.
RotationDoes not existCreate a new key, delete the old one.
Per-key resource allow-listDoes not existScope is the only restriction.
Rate limitingDoes not existNo throttle on /mcp.
Usage logDoes not existA last_used_at timestamp is the entire record.
Key auth for Flight SQL or RESTDoes not existAPI keys authenticate /mcp and nothing else.
MCP access to automation findingsDeliberately withheldThe run-history tools are not exposed over MCP.
MCP streaming, resources, promptsDoes not existPOST only. GET and DELETE return 405.

Onboarding and guidance

There is no guided setup, no sample data, no tooltips and no walkthrough. Empty states point at the next action and stop there.

The sharpest version of this is the first-run trap: a new tenant has no object store, everything returns OBJECT_STORE_NOT_CONFIGURED until an admin registers one, and a non-admin first user cannot fix it themselves.

On this page