Experimental research prototype, v0.17.0 for Windows x64

Malleable software in a single file.

A Nendo application is one SQLite file. It starts empty, and you and your coding agents shape it into a working application with its own schema, data, forms, boards, record pages and history. Nothing is generated or built, and changing it never means starting over.

Nendo (粘土) is Japanese for clay.

The Nendo mark
Nendo showing the Station status front page: count tiles, a progress ring and a breakdown chart, with the navigation listing the record types beside it and two tabs aboveNendo showing the Station status front page: count tiles, a progress ring and a breakdown chart, with the navigation listing the record types beside it and two tabs above
Nendo Station, the fourth reference application. Captured from a running host on 2026-10-03 by tools/Capture-SiteScreenshots.ps1.

The problem

Generated apps are easy to make and hard to keep.

An AI can write a small application in minutes, but the result is another silo. The data is tied to code nobody intends to maintain, every change means generating it again, and there is no visible history or way back. When the code breaks, the data is stuck inside it.

Low-code tools fix some of this, but your application then lives on someone else's platform, in their format. You can't keep it as a file to copy, inspect and open offline ten years from now.

The idea

Software you reshape instead of regenerate.

A .nendo file holds the schema, the data, the screens and the history. People and agents change it in place with a small set of typed operations. The desktop app, the web Workbench and an agent connected over MCP all use the same operations and the same validation.

How it works

Shape it, review it, accept it.

  1. 1Create an empty file
  2. 2Add or import schema and data
  3. 3Work in the default Studio table
  4. 4Ask an agent for a form, board or record page
  5. 5Read the semantic diff
  6. 6Accept, observe, compensate

Agents

An agent's changes wait for you to accept them.

Agents connect over MCP, and only from this computer. They get no SQL, no database path and no file access, just a fixed set of typed operations. Nendo tries each change on a separate copy of your file and shows you the result as a readable diff. When you accept, it applies the same operations to your file. The copy is never swapped in.

claude mcp add --transport http nendo http://127.0.0.1:41763/mcp
codex mcp add nendo --url http://127.0.0.1:41763/mcp

That address is all the configuration a client needs; there is no key or password. The flip side is that any program on this computer can connect at the access level you have set, so turn agent access Off when no agent is working.

Claude Code proposes

A board of crew, grouped by role

4 operations, validated on a clone of Nendo Station.nendo

Add boardCrew by role
ColumnsCrew › Role
Card titleCrew › Name
Card fieldCrew › Callsign
Records12 unchanged

Reversibility: reversible. Removing the board removes only the board.

An illustration. A real proposal lists the exact operations the agent sent.

Screens are data in the file.

Each screen below is stored in the file as a tree of typed parts, and Nendo builds the screen from it when the file opens. Nothing is generated, so there is no code to lose or review.

A board surface grouping crew records into columns by role, with per-column countsA board surface grouping crew records into columns by role, with per-column counts

A board

Columns come from a choice field or a reference, each with a count. Drag a card to another column and the record changes with it.

A component record page with a toned header, two commands and a formA component record page with a toned header, two commands and a form

A record page

A coloured header, related lists, collapsible sections, and commands such as Take offline and Return to service.

A calendar surface placing maintenance records on a monthA calendar surface placing maintenance records on a month

A calendar

Records placed on a month by a Date field. Times of day and recurring events are not supported.

A timeline surface laying incidents along one civil yearA timeline surface laying incidents along one civil year

A timeline

Records laid out by start date, one calendar year at a time.

A gallery surface: experiment records as cards with a rating drawn on a closed scaleA gallery surface: experiment records as cards with a rating drawn on a closed scale

A gallery

Records as cards, with a rating shown as dots on a fixed scale.

A matrix surface: two crossed choice fields answered by one grouped readA matrix surface: two crossed choice fields answered by one grouped read

A matrix

Two choice fields crossed into a grid, with an exact count in every cell, including the empty ones.

The Nendo Station front page, with count tiles, a progress ring and a breakdown chartThe Nendo Station front page, with count tiles, a progress ring and a breakdown chart

A front page

A page for the whole file rather than one record type: counts, a progress ring and a breakdown chart.

The Studio Data area showing the Components table with sort and filter controlsThe Studio Data area showing the Components table with sort and filter controls

Studio, always

Every valid file opens here, and nothing an application or an agent adds can remove it.

The name

Why clay

Clay holds its shape, and you can reshape it without starting over. That is the idea: the file you start with is the file you keep, however many changes you or an agent make to it.

A few fixed rules protect that. An empty file is valid. Studio, the built-in table view, can't be removed. Changes are previewed on a copy, never on your data. Every operation states whether it can be undone.

Read all eight axioms

Status

Where it stands

The core loop works end to end. Four reference applications, each shaped differently, put the idea to the test, and two of them were built from an empty file by an agent working only through MCP.

Public releases, code signing, ARM64, cloud sync and other platforms arenot supported. Every usability, scaling and accessibility result so far comes from the author's own testing; nobody else has evaluated it yet.

Full status, including what hasn't been tested