Skip to content

Hosted reports

Kreel can turn a live agent analysis into a permanent, shareable report. Your AI agent builds and publishes it; you manage it afterward on the Reports page in the left navigation. This page covers viewing, sharing, and deleting reports that have already been published. For how your agent publishes one, see Publish a report.

Reports are served from their own domain, separate from the Kreel dashboard. Each brand gets one URL pattern: https://{handle}.reports.kreel.ai/{slug}.

  • {handle} is a subdomain your workspace claims once per brand. It’s globally unique across Kreel, for example acme.
  • {slug} is generated from the report title. It only needs to be unique within that brand.

This is a separate origin from the authenticated app at app.kreel.ai, on purpose. A report’s own HTML, and any CSS or JavaScript inside it, run isolated from your Kreel login and from every other brand’s reports. Nobody needs to sign in to Kreel to view a report. They unlock it with the brand’s report password instead (see below).

Anyone with access to the brand in Kreel can open the Reports page and see the list and view counts. Claiming a handle, setting a password, and deleting reports are owner and admin actions only.

Before your agent can publish a report that anyone can actually open, an owner or admin needs to do two things once per brand.

  1. Open the Reports page for the brand.
  2. Under Report handle, enter a subdomain label and click Claim handle. Handles are lowercase letters, numbers, and hyphens, 3 to 63 characters, and can’t start or end with a hyphen. This becomes the subdomain every report on the brand is served from.
  3. Under Report password, enter a password of at least 8 characters and click Set password. This single password unlocks every report on the brand, not just one.
  4. Ask your AI agent to publish a report (see Publish a report), or publish one yourself from the CLI.

Share a report by copying its URL from the reports list: https://{handle}.reports.kreel.ai/{slug}.

The first time someone enters the correct password for a report, Kreel remembers it in their browser for that brand. From then on, they can open any other report on the same brand without entering the password again. There’s no per-report password and no separate login; it’s one shared password per brand.

An incorrect password just re-prompts. Kreel throttles repeated incorrect attempts before letting the same visitor try again.

Rotating the password (the button reads Rotate password once one is set) signs everyone out immediately. Anyone who already unlocked the brand’s reports has to enter the new password again.

The reports list on the Reports page shows one row per report: title, its URL, when it was last viewed, total views, unique viewers in the last 30 days, and when it was published. Use the copy-link button next to a report’s URL to grab its share link. Your own views count toward the totals when you open a shared report yourself.

Reports are frozen once published: there is no edit. If your agent needs to fix or update one, it publishes a new report and points it at the old one, with a one-line correction note. The old report’s URL then redirects to the new report, which shows Updated on {date}: {note}, while the old report is still stored and can still be opened directly by its own link. See Publish a report for how your agent does this.

A corrected report has a Version history button on its row. It lists every retained version of the chain in order, with who published or approved each one, when, and its correction note. Deleting one version removes only that version; the versions before and after it stay in the same history. Reports published before version history existed show their publication time but no publisher, because that was not recorded.

The Drafts tab lists reports waiting for approval before client delivery, even when the brand has not published anything yet. Two things put a report there:

  • An agent calls publish_report(draft=true), or calls publish_report while the brand requires approval. These arrive as publish_report decisions and also appear in the Decisions queue.
  • A scheduled agent that produces a hosted report holds its run for review, either because the job is set to hold each run or because the brand requires approval.

Every draft is frozen before anyone reviews it: branding, the data-trust section, snapshotted images and any correction notice are stored exactly as they will publish, and no public URL serves them. Select Review to open the full-frame preview. It renders the stored report in a sandbox with scripts and remote requests blocked. Approving publishes exactly those bytes and records you as the approver. Rejecting an agent’s draft needs a reason, which the agent reads back from get_decisions; a held scheduled run is rejected without one. Only owners and admins can approve or reject, and only from a dashboard session.

Require approval for agent-published reports

Section titled “Require approval for agent-published reports”

The setting at the top of the Drafts tab decides whether agents can publish on their own. It is on by default for Agency plans and off for other plans. When an owner or admin sets it for a brand, that choice stays in place if the plan changes; Use plan default returns to the plan’s default.

While it is on:

  • agent publishes become drafts;
  • scheduled report agents hold every run for review, including jobs set to deliver automatically, and a run already delivering stops before any step that has not gone out yet;
  • publishing with an API key (kreel publish, POST /api/reports) is refused and creates nothing.

Turning it off never approves drafts that are already waiting.

Owners and admins can delete a report from its row in the list. Deleting is permanent: the report’s stored HTML is removed and its URL stops working immediately. This can’t be undone, so Kreel asks you to confirm before deleting.

Kreel does not support a custom domain for reports. Every brand’s reports are served from a subdomain of reports.kreel.ai.

Owners and admins can configure Report branding in Reports settings, even before publishing the first report. Set a display name, an accent color (#RRGGBB), and/or upload an agency logo. Logos must be nonanimated PNG, JPEG, or WebP images, at most 2 MiB and 2048 × 2048 pixels. Images are normalized to PNG with metadata removed; the normalized file must also fit within 2 MiB. Transparent logos are supported.

Save branding to apply it to future publications only, including new reports that supersede older ones. Published HTML and its logo snapshot remain immutable. The header appears above the data-trust disclosure; the accent decorates the header without changing charts or authored report content. A missing display name falls back to the Brand name. Clear branding and save to restore the default appearance for future reports.

Branded reports include Powered by Kreel. Attribution removal and any paid white-label tier are a separate product decision; there is no removal toggle.

Email support@kreel.ai.