CodeKasten Open the app
WSPuj11gqJXzY9VsEr8hHQVC Workspace

Build your tools in one box

Records, record types, views, workflows and connectors are cards in one box, versioned like code and open to your agents.

In the box

  • Projects and your own recordsPRJ
  • Fields of a typeFLD
  • Views and boardsVST
  • RelationsREL
  • WorkflowsWFD
  • ConnectorsCNN
  • ReportsSYSRPT
  • ReleasesPKR
  • Coding sessionsSYSCDS
  • Fleeting notesSYSFLN

One kind of card

A project, a field, a view, a workflow and the note you typed this morning are all rows of one table, each with its own number. Define a record type and it has lists, forms, filters, a page of its own, a GraphQL API and tools for agents at once. There is no schema to migrate.

  • Lists, boards, filters and saved views drawn from the type
  • Relations between any two types, shown as tabs and a graph
  • Reports and dashboards that count on the server
  • Every record in two languages if you need it

Number a card

Pick a type. The number is made the way CodeKasten makes it.

PRJ7aKq2mXv9TzR0wLbEYMBA
What it is
PRJ, a project. An app's types start with its publisher's code: HLP, then TKT.
Random
Base62 letters from the browser's random source, so a number is never handed out twice.
Checksum
Four letters that remember which letters were capitals.

A spreadsheet that turns the number into capitals loses nothing: the checksum puts every letter back.

A list of projects in CodeKasten, with priority, status and name columns
Projects, a type of the core app, as a list.
A drawer of index cards standing on a wooden table, one card pulled forward
Copyright catalogue cards at the Library of Congress, three by five inches.
An aisle between shelves filled from floor to ceiling with labelled slip boxes
The slip archive of the Thesaurus Linguae Latinae in Munich.

Cards that branch

Niklas Luhmann kept about 90,000 cards and numbered them so a thought could branch: card 21 could be followed by 21a, and 21a by 21a1, without renumbering anything. CodeKasten branches the whole box.

  • Try a change on a branch, then look at what it did.
  • Commit with a message that says why.
  • Merge when somebody has read it. main is protected: nobody below an admin changes it, and an agent never does.
  • Share one branch with a guest, and nothing else.
Luhmann's numbers, as branches: planning grows from card 21, gets a branch of its own, and is merged back.
The history of a branch called planning: two commits with their messages
A branch's history: each commit with its reason.
The branch menu: show status, commit, create a branch, merge, request a merge, share
The branch menu: commit, merge, or ask somebody to merge.
Close-up of a slip box labelled censorius, with handwritten slips behind it
One box of the archive, labelled with its word.

Make it once, install it anywhere

Record types are built in an app workspace, published as a release and installed where they are needed. A release never changes once it is published, so ten teams can install the same Helpdesk and each keep their own tickets. An upgrade is a new release, taken when each team is ready.

  1. Build the types in the Entity Builder, or let an agent build them.
  2. Commit and publish a release of the app.
  3. A reviewer approves it for the Marketplace.
  4. Install it in every workspace that needs it.

Workflows and connectors ship the same way, as packages of their own.

The Entity Builder showing a type called Ticket, with its prefix, parent type and category
A Ticket type in the Entity Builder.
The Marketplace listing the CodeKasten, Core, Core Workflows and Design packages, each installed
The Marketplace, where releases are installed.

Let the box act

Draw what should happen when a record is added, changed or deleted, on a schedule, or when a webhook arrives. Workflows are data too: versioned, released and installed like apps, and run on Temporal, so a wait of a week survives a restart.

A record
added, changed or deleted, of any type
A time
an interval or a cron expression, in your time zone
A webhook
from a connector, started once even if it is sent twice
A person or an agent
with Run now, or run_workflow_instance
Announce a new project compiled
When a project is addedtrigger.entityEvent
Wait a momentcontrol.delayOutput
Tell the teaminbox.sendResult
Endworkflow.end

Waiting for a project.

A coding session kept in CodeKasten: its repository, branch, tokens and cost, its summary, and the start of its transcript
A coding session, kept with its summary and transcript.

Agents work on a branch

Connect Claude Code, or any MCP client, and an agent works in your workspace as the person whose key it holds. It reads and changes records, builds record types and workflows, commits, and asks for a merge in your Inbox. It never writes to a protected branch, so the worst it can do is a branch you close.

claude mcp add --transport http codekasten \
  https://mcp.codekasten.com/mcp \
  --header "Authorization: Bearer sk_…"

With the Claude Code plugin, each session is kept in the workspace, and the next one starts with a briefing: the project's facts, its open gaps and the skills your team approved.

How we work with agents
The Inbox with items from coding sessions and a captured note
What agents ask for arrives in the Inbox.

Press N for a fleeting note

Luhmann wrote quick notes before he wrote cards. Press N anywhere in CodeKasten, or share to it from your phone, and the thought is kept, private to you. Later, Make it a… turns it into a project, a document or any type your workspace offers.

The capture box: a note titled Hero picture: the new shop front, linked to the project Website relaunch
A note, captured on a project's page.
A wall of cardboard slip boxes, each with a handwritten label and a pull strap
Slip boxes of the Thesaurus Linguae Latinae.

Read on

The documentation says what each part does, the blog says why we built it that way, and every release is on the changelog.

From the blog

  • How to be more ambitious with CodeKasten

    Felix Rieseberg's four kinds of ambition with models (speed, altitude, depth, range) applied to building apps, workflows and connectors in CodeKasten through its MCP server.

  • Welcome to the CodeKasten blog

    CodeKasten has a blog. It is written in CodeKasten, and published from it.

Latest releases

  • The CodeKasten blog

    A blog at blog.codekasten.com, written in CodeKasten: posts published there appear on the blog with their pictures and an RSS feed.

  • Releases that link to their blog post

    A product release can name its post on the blog, and the What's new card's Read more opens it.

  • Pictures in your text

    Put pictures in documents and descriptions, with a caption; agents can build types that extend Document, with choice and person fields.