Changelog
Notable changes to Dibbla. Subscribe to the RSS feed if you'd rather pull than push.
This changelog begins here. It is not backfilled — entries before 2026-08-12 were never written down, and inventing them now would be worse than the gap.
2026-10-08
Secrets are write-only
A secret’s value now goes one way: into Dibbla, and from there only into your running app. No Dibbla API, CLI command or MCP tool returns it, and a plain env var can no longer stand in for one.
dibbla secrets getis gone — it explains why and exits1— anddibbla exportwrites secrets by name only;--include-secretsis refused.dibbla env pullwrites the plain variables with their values and each secret as an empty line for a development value of your own. A line you filled in is never overwritten.dibbla secrets setasks for the value at a hidden prompt. A value typed on the command line still works, with a warning.dibbla secrets requestprints a link to a signed-in Dibbla page where the value is typed — what an AI assistant runs instead of asking you to paste a key.- A plain env var that should have been a secret is promoted, with a new value
you enter on a Dibbla page:
dibbla env promote, Make secret in the console’s environment editor, orplatform_secret_write action=promoteon the platform connector. The env var is removed from the whole app and the app restarts. - An env var named like one of the app’s secrets is refused, and one whose
name or value looks like a secret is refused unless a person confirms it is
not one. In
dibbla.yamlsuch an entry is a warning for a person — also on a deploy from a linked folder — and a refusal for an AI assistant’s deploy. - Logs and build output show
[secret NAME]where one of the app’s secret values would have appeared. dibbla storage credentialsno longer prints the app’s keys for a bucket.
See Env vars and secrets and
dibbla secrets.
2026-09-30
E-mails when the trial has ended
Owners and admins now also get an e-mail the day their free trial ends — the apps keep running exactly as they are, deploying is paused until the organization upgrades — and one more a week later if it is still on the trial, asking whether anything is in the way. Replies reach a person, and nothing follows after that. See Reminders by e-mail.
Checks on apps behind a login
Application checks now test apps that have require_login or an access
policy. The login page no longer answers in the app’s place, so you do not
have to make an app public to monitor it. The check comes in as a visible,
read-only machine identity (X-User-Kind: application-check). Its credential
is valid only for that app and that run. See
Apps behind a login.
2026-09-27
Trial reminders by e-mail
Owners and admins of an organization on the free trial now get a short e-mail seven days before the trial ends and another the day before, with the end date and the link to upgrade — your apps keep running either way. Replies reach a person, and the mail’s unsubscribe link stops further reminders. See Reminders by e-mail.
dibbla upgrade — the payment link in your terminal
dibbla upgrade prints a Stripe Checkout link that moves your organization
from its free trial to Business, the same link the console and a connected
agent give you. --open opens it in your browser; --json hands it to a
script as checkout_url. Only an owner or admin gets a link — everyone else is
told who can upgrade. dibbla status names the command under every trial’s
Plan: line, and a deploy refused because the trial ended ends with it. See
From the terminal.
A heads-up before your trial ends
In a free trial’s last seven days, a successful dibbla deploy or git push
ends with a short reminder of when the trial ends and the link to upgrade;
your apps keep running afterwards, only deploys pause. dibbla status says
“ends in N days” with the link, and agents over MCP get the same reminder
from platform_whoami and platform_deployment_start so they can tell you in
the chat. See A heads-up in the trial’s last week.
2026-09-23
A friendly way forward when your trial ends
When a free trial ends, dibbla deploy, git push, dibbla db create and
agents over MCP now say so plainly — thanks for trying Dibbla, your apps keep
running — and link straight to the upgrade page in the console, with the
Business price. The link is also in --json output and in the MCP error as
upgrade_url, so an agent can hand it to you in the chat. Hitting a plan’s
app or database limit links the same way. See
What hitting a limit looks like.
2026-09-21
Moving away from Dibbla, written down
dibbla export <alias> takes everything an app keeps on Dibbla into one
directory — the source as a git repository, databases as pg_dump archives,
buckets as files, the environment as dotenv, the manifest, and a
docker-compose.yml that runs it all on a laptop. Secret values stay out unless
you ask for them. A new page, Moving away from Dibbla, is the
procedure around it: what you get, how long you have (30 days to switch, 30
days to retrieve after that), and that it costs nothing — the Data Act
information that §12 of the Terms commits to. See
the dibbla export reference.
2026-09-20
The connector never takes a secret’s value
platform_secret_write no longer has a set action or a value argument.
When an assistant needs an API key, a password or a token, it asks Dibbla for
a secure link, writes a short title and a plain-language explanation of what
the key is and why the app needs it, and hands you the link. You sign in to
the Console and enter the value on a page that shows those words above the
field; the assistant learns only that it was saved. A client still holding the
old tool definition and sending a value is refused before anything is stored,
with the request flow named in the answer. dibbla secrets set in the CLI is
unchanged. See Giving the assistant a secret without pasting
it.
2026-09-10
The platform connector is open to everyone with a Dibbla account
Connecting an AI agent to Dibbla no longer depends on being on a list. Until
today https://mcp.dibbla.com/platform ran as a gated pilot: an account that
had not been added to it was refused at the approval page, which is a fine way
to roll something out and a poor way to ship it. Any signed-in Dibbla user can
now connect a client, approve what it may do, and use the read tools straight
away — and tick the write scopes on the same page to let it change things.
Nothing about what a grant may do has changed. Consent still starts read-only, every write is a box you tick rather than something a client is handed, destructive operations still require a separate human approval in the Console, and a grant still reaches exactly one organization. Existing connections keep working untouched; none had to be reconnected.
See Connect an AI agent.
2026-09-06
A deploy from an agent lands, instead of waiting for approval
Immediate rollout is now what every Dibbla organization starts from. Until now, organizations that existed before the rollout policy setting was introduced carried a four-eyes requirement they had never chosen — written for them, not picked by them — which meant a deploy from a connected agent or from the CLI came back as a pending deployment for a colleague to approve. Those organizations have been moved to immediate rollout and told about it.
Review has not gone anywhere: an owner or admin turns it back on under Organization settings → Deployments, for the whole organization or for a single app, and organizations that had deliberately chosen a review policy keep it untouched. What changed is only what you inherit when you have not chosen. See Deploy from an agent.
2026-09-01
Maintenance agent: proven in production, ready for gradual opt-in
The maintenance agent ran its first full verified chain in production on
Dibbla’s own checks-canary control app. A run found a planted defect,
opened an evidence-based proposal, notified the organization
(application.maintenance.* events now have producers behind them —
subscribe and they arrive by email), waited for an approval from someone
other than the author, deployed, and was post-verified. The nightly
schedule then took over on its own: a run started by the scheduler, with
real model and tool usage, read the app’s logs, its deployed source and its
check history before reporting found_nothing — and it reported that only
because every mandatory evidence tool had actually run. Runs that skip
evidence are refused with a typed REQUIRED_TOOL_MISSING instead of a
comfortable all-clear. An emergency disable drill mid-run stopped new spend
and writes immediately and fenced the run’s leases.
Every organization and every app remains off until someone opts in. The next steps for operators are a written runbook: enable the org, name the app, watch the first run, and how to disable fast.
Maintenance agent: a verified guide, CLI reference and skill
An opt-in overnight agent can now be followed from the docs: Maintenance
agent hangs off Stage 5 as a detour, with a
matching CLI reference for
dibbla apps maintenance and dibbla apps proposals. The agent reads logs,
source and check history, then either reports nothing, records a finding, or
opens a change a different person approves. It never deploys on its own.
Availability is controlled per organization and per app. Both switches ship off.
2026-08-30
Connect an AI agent to Dibbla over OAuth
Dibbla now has a general platform MCP connector at
https://mcp.<domain>/platform. Connect an AI agent
walks through setup for Claude, Codex, Gemini and other remote MCP clients,
browser consent, and an end-to-end connection check before the first tool call.
The connector can inspect apps, services, deployments, logs, databases, storage, workflows, operations and file transfers. Write access is separate from the default read consent. Routine retries are idempotent, secret values are write-only, destructive deletion requires independent human approval, and file bytes stay outside the model. The exact remotely available operations remain derived from the platform capability contract.
Availability is controlled per Dibbla installation. An operator can disable
/platform without disabling the existing support, notification or community
MCP toolsets. On Dibbla’s hosted service the connector is open to every Dibbla
user.
2026-08-24
Pricing now leads all the way to signup and a reviewed Checkout
The Free and Standard cards on dibbla.com/pricing no longer end at a contact form. Sign up free carries a new user through login and organization creation; the new organization receives 30 days, with no card required. Existing users simply continue to their current organization and plan — clicking never resets a trial.
Sign up for Standard carries the same intent through login and onboarding, then opens an authenticated console review. The review names the organization, plan cadence and current base price. Opening it creates no Stripe Checkout Session: only Confirm and continue to Stripe does. If the active organization changed in another tab, the confirmation is refused before Stripe is called. Enterprise, externally billed, self-hosted and existing Standard organizations remain outside the purchase path.
See plans & limits.
2026-08-23
One machine, several Dibbla servers
A second dibbla login used to overwrite the first. It no longer does. A
context is a named login target — an API URL, its token, and the
organization you act as there — and several live side by side:
dibbla login --context prod --api-key=<token>
dibbla login --context acme --api-url https://api.example.com --api-key=<token>
dibbla context list # both, with the one in use marked
dibbla apps list --context acme # just this one command
dibbla context use acme # from now on
- Nothing to do if you only use one server. Your existing login became a
context called
prodthe first time you ran the upgraded CLI, keeping its organization pin. No re-login, and no change to how anything behaves. - Tokens stay apart. Each context keeps its own token in the OS keyring
under its own key — no host gains a plaintext credential it did not already
have. The list itself is a plain, editable YAML file at
~/.config/dibbla/config.yamlholding no secrets. - CI and scripts are untouched. With
DIBBLA_API_TOKENset — or anywhere a CI environment is detected — no config file and no keyring is read at all. Environment variables still win over every context. --context <name>works on every command for a single invocation, without changing what is selected.DIBBLA_CONTEXTdoes the same for a shell.- Wrong names fail loudly. A
--contextthat names nothing, or aconfig.yamlthat will not parse, is an error — neither quietly falls back to production.
Requires CLI v1.2.61; run dibbla update. See
dibbla context.
Every new organization starts on a 30-day trial
Creating a workspace — personal or for a team — now starts a 30-day free
trial, and no card is collected. The end date shows in the console, on
the portal welcome screen and in dibbla status.
- Creating an organization is open to anyone. It used to be limited to a short list of e-mail domains; that restriction is gone.
- Joining an existing organization does not start a new trial — you inherit that organization’s plan, so joining a paying team gives you the paying team’s plan.
- When a trial ends, your apps keep serving. Deploying and creating are paused until you upgrade; nothing that is already running is touched. See plans & limits.
Support tickets can carry a file
A reporter can attach the screenshot instead of describing it, and your team
can attach one to a reply. Up to 10 MB per file — images, PDFs, plain text,
CSV, JSON, .docx and .xlsx.
- Nothing to configure. Files are stored by the platform. Turn support on and the picker is there.
- A file is as private as its ticket. Whoever may read the ticket may open
its files; a ticket set to
ownkeeps its files to its reporter and your team. Uploads and downloads both go through Dibbla, so there is no shareable link to leak. - Files leave when the ticket does — with a deletion on request, and with the 24-month retention sweep.
- Dibbla checks the size and the type, not the contents: attachments are not scanned for malware. Treat one the way you would treat a file emailed to your support address. See files on a ticket.
Managed storage: S3 buckets, operated like databases
Apps that need somewhere to put files now get one the same way they get a database — one command, and the credentials arrive on their own:
dibbla storage create my-uploads --size 25Gi
- The credential is scoped to that bucket alone. It cannot read, write or
list anything else on the platform, and it lands in your app as four
STORAGE_<NAME>_*environment variables. Nothing is pasted into a config file or shared between apps. See the storage guide. - The quota is hard. A full bucket refuses uploads rather than quietly
growing, and
--expire-dayslets data that ages out clean itself up. - Rotation does not mean downtime.
dibbla storage rotatemints a new key, updates the secrets and restarts the bound services — because pods read their environment at start, skipping the restart would leave a running app holding a dead key. - Also in the console under Storage, and in the
dibbla storagereference.
Underneath, the platform’s object storage grew up at the same time: a pinned image with health probes and resource limits, network policy so only services that hold a binding can reach it, nightly off-cluster backups — and the platform’s own Postgres now archives to object storage as well, so production databases are restorable rather than merely replicated.
2026-08-22
Your app’s users can now reach you
Every app can offer support tickets — a ticket flow the platform hosts, switched on per app, with no code in your app and no second login for your users:
- In your app: one
<script src="/_platform/support.js"></script>tag puts a support affordance on your app’s own origin. Signed-in users get a compose form; everyone else gets a sign-in prompt that returns them where they were. - In the portal:
/supportis one inbox for a user’s tickets across every app they use, and each app keeps its own thread page. - In the console: a per-app Tickets tab for triage — reply, assign, set status and priority, and leave internal notes the reporter never sees. Owners and admins can switch support on right there, without editing YAML and without a redeploy.
- For agents: the same queue over MCP at
mcp.dibbla.com/support.
Who may read a ticket follows who may open the app — no second access model —
with a visibility: own setting for apps where that is too wide. Closed
tickets are deleted after 24 months, and can be deleted on request sooner.
See Support tickets, and the new
dibbla.yaml reference for every field the manifest
accepts.
Webhooks, Discourse, and notifications for agents
The notification layer’s last channels are live, and the whole layer is now complete:
- Webhook: paste one endpoint URL and your own systems get notified — each delivery signed (HMAC over payload + timestamp) so your receiver can verify sender, integrity and freshness against a documented recipe. Thin payloads: identifiers and a summary, never the full event body.
- Discourse: organizations with their own forum can have notifications posted as topics, attributed to the acting user — never silently as an admin.
- Agents: an agent holding your API token can read and acknowledge your
notification stream over MCP at
mcp.dibbla.com/notifications— the same stream you would get by email, scoped strictly to you.
Plan limits are enforced — with honest errors
The plans introduced with the billing foundation now mean something: on
plan-billed organizations, the Free trial includes 3 apps and 2 databases,
Standard includes 15 and 10 (individually adjustable per organization).
Hitting a limit refuses the action before any upload or build, with an
error that names the numbers and the remedy — and the CLI now prints a
Docs: link to the new Plans & limits reference on
these errors. Three guarantees worth knowing: an organization exactly at its
app limit can always redeploy the apps it has, running apps and databases
are never touched by any limit, and organizations without a plan — including
every self-hosted installation — have no limits at all. The console’s Plan
tab now shows usage bars, dibbla org list gained a PLAN column, and
dibbla status shows your plan and trial days.
Notifications now happen by themselves
The notification layer’s channels have had nothing to say until now — that changes today. Support tickets and failed deployments notify automatically:
- Reply to a ticket and the reporter gets an email — scoped to their own tickets, never for their own replies, with the usual one-click unsubscribe.
- Connect a Slack webhook and new tickets announce themselves in that channel from that moment — configuring the channel is the setup.
- A failed deployment produces a
deploy.failedevent you can subscribe to — including background rollouts where nobody is watching a terminal, which used to fail silently.
Notifications never slow down or break the thing they report on: events are written alongside the change itself and shipped afterwards, so filing a ticket or deploying works exactly the same even if the notification system is down. See the new Notifications guide.
2026-08-21
Slack notifications
Notifications can now go to Slack. In your organization settings, add a Slack incoming webhook under Integrations and subscribe the events you care about — the matching notifications post to that channel. Each message is a short summary with a link into Dibbla, never the full contents, since a channel is a wider audience than a ticket thread. If the webhook is later removed in Slack, Dibbla notices on the next send and disables the connection rather than retrying a dead URL. Your webhook is stored encrypted and never shown back to you.
Email notifications
Dibbla can now send email notifications. The platform gained a notification
layer earlier — a durable event log with per-organization subscriptions — and
it now has its first delivery channel: email, sent from
notify.dibbla.com with SPF and DKIM aligned so messages land in the inbox
rather than spam.
Every notification email carries a one-click unsubscribe link (and the
standard List-Unsubscribe headers, so your mail client can offer its own
button). Unsubscribing is immediate and needs no login — the link disables
exactly the one subscription that sent the mail, nothing else.
Nothing sends until an organization configures it, and self-hosted installations send nothing until an operator sets up SMTP — see self-hosting with Helm.
Organizations can now hold a plan
The platform has grown its billing foundation: an organization can be on a Free trial, Standard, or Enterprise plan, matching the tiers on dibbla.com/pricing. Self-serve upgrades run through Stripe Checkout, and card and subscription management through the Stripe customer portal — Dibbla never sees your card details. The console’s organization settings gain a Plan tab with the upgrade and billing actions.
This is rolling out gradually: the Plan tab and upgrade flow appear once billing is switched on for your installation, and self-hosted installations carry no billing surface at all. Nothing changes for existing organizations — no plan is assigned retroactively, and no limits are enforced yet.
2026-08-12
Skills are fetchable over HTTP
The Dibbla agent skills are now published at
https://dibbla.com/.well-known/agent-skills/index.json, following the Agent
Skills Discovery RFC (Draft 0.2.0). An agent with no dibbla binary can fetch
the skill directly; every entry carries a sha256: digest to verify against.
This is a second supported install path, not a replacement. dibbla skills install still needs no network and still gives you the skill version matching
your CLI. The mirror is pinned to a tagged release, so it is version-locked
too — see Fetching the skill without the CLI.
CLI v1.2.47 – v1.2.49
dibbla deployanddibbla apps updategained--env-file, and there is a newdibbla secrets importfor bulk-loading a.envinto secrets.- Skill content corrections: examples now point at production hosts rather than staging, and the “no network required” note is scoped to the CLI install path now that the same files are served over HTTP.
dibbla.com
- A published FAQ — 17 questions, deep-linkable, readable without JavaScript.
- Per-page titles and canonical URLs, a real 404, and
dibbla.com/docsnow redirects here instead of silently serving the home page. llms.txtgained an FAQ index, and there is a newllms-full.txtcarrying the whole site’s content in one fetch.