KernDocs
KernGitHub ↗

Recipe

Build a personal Web App

Turn a repeated workflow or structured dataset into a durable interface inside Kern.

When an App is the right shape

Use a Kern Web App when the operator will revisit the same data, workflow, or decision surface. Keep one-off analysis in Chat and large repeated row sets in an App collection.

A real Kern Web App displayed in the product interface
Apps turn agent-built workflows and data into focused operator interfaces.

What you enable first

  • If the App has to act in the world, enable that tool in Home → Integrations first. The invoice example below sends mail, so it needs Gmail.

The prompt to send

Describe the job the interface has to do, not the components you imagine. Say what you will look at, what you will change, and what has to survive a reload. Pick whichever of these is closest to your own.

New App prompt: Invoice chaser
Create a new App called Invoices that I will use to chase unpaid work.

Each invoice has a client, amount, issue date, due date, and a status of
draft, sent, paid, or overdue. Put the invoices in a collection, since there
will be hundreds over time.

Show one list sorted by how overdue something is, with filters for client and
status. I need to mark an invoice paid in one click, and that has to survive
a reload. Mark anything past its due date as overdue on its own.

Show a useful empty state before I have added anything, and make it readable
on a phone.

What you check and iterate on

  • Add two real records, including one that should stand out, and confirm it sorts to the top.
  • Change something, reload the page, and confirm the change stayed.
  • Look at the empty state and a phone width before you decide the App is finished.
  • Ask for changes in the same App thread so the App keeps its identity and stored rows.
Iteration prompt: Add a governed action
In the Invoices App, add a Chase button on each overdue row that drafts a
polite payment reminder to that client, with the invoice number, the amount,
and how many days late it is.

Show me the draft to approve before anything is sent, and record the date of
the last chase on the invoice so I can see who has already been nudged.
Keep the existing records intact.

The first of those is where the boundary becomes visible. Drafting the mail happens inside the App, sending it is a Gmail tool action, and it appears in Tool audit with the approval you gave.