Nucleus logonucleus
Nucleus Apps

Start with a database and some tools. Finish with an app.

On Nucleus, a new product can start as a database and a set of MCP tools that Claude drives, before anyone has designed a single screen. When it's ready for people who don't work in Claude, give it a web interface, and Nucleus hosts it: signed in, permission-checked and kept live. You never set up a separate login, a separate server or a second copy of the business rules.

First commit → team app2 weeks MCP tools today~137 Tables52 To register an app2 fields
01

How Protolyth grew, without a rewrite

Protolyth is the lead pipeline behind a sales campaign. It stages leads, enriches them, flags problems, drafts outreach and tracks each lead until it signs up and pays. It wasn't planned as an app. It became one because people needed it to be.

Day 1

A database and MCP tools

Vendor-enrichment tools and a database, installed in Nucleus like any other server. Claude was the whole interface: the operator asked, and the tools answered and wrote.

MariaDBMCP serverClaude
Days 2–13

The rules took shape

Contentions that block bad sends, lead staging, enrichment that won't re-buy data, deals. Each rule was written once, as a tool, and tested in conversation before any screen existed.

contentionsstagingenrichment
Day 14 onward

A team app, hosted by Nucleus

A review screen for drafts, then sign-ups, lead claiming, each rep's book of leads, a leaderboard and role-based access, all on the same database and the same rules.

/apps/protolythlive syncroles
Building tools first is what made the app fast to build. By the time it needed a screen, every rule had already been exercised by Claude against real data. The app didn't reimplement the business logic. It calls the same functions the tools do.
02

What the team sees

A rep opens Protolyth from Nucleus and lands on their own day: what they've closed, what they're working, and which leads need them. The same people reached the same data from Claude a week earlier.

● nucleus.example.com/apps/protolyth/
protolyth StagedCampaignsCompaniesLeadsDealsMy bookLeaderboard SALESLiveS

Good morning, Sam

Here's what's waiting on you.
ARR
$48.2k
subscriptions closed, annualized
MRR
$4.0k
 
Book value
$131k
expected ARR still being worked
Rank
#2
of 7 reps
Leads
86
your book →
Needs outreach12claimed, never contacted · oldest first
studio-example.comowner@studio-example.com · spring campaignNot contacted$1,188
example-bakery.frcontact@example-bakery.fr · spring campaignNot contacted$708
Moving9using the product, not paying yet · newest first
example-yoga.comhello@example-yoga.com · spring campaignLive · 2 d ago$2,388
shop.example.deteam@shop.example.de · spring campaignSigned up · 5 d ago$1,428
Going quiet5contacted, nothing in 14 days
example-gallery.itinfo@example-gallery.it · spring campaignContacted · 16 d ago$948
Cancelled1subscription canceled
example-tours.esops@example-tours.es · spring campaignCancelled · 3 d ago$588
142.0 projectson no lead
6Signupsto place on a lead
3Company groupingsproposed
8People → companyproposed
21Unmatched eventson no lead
4Open workqueued or claimed
Home. Closed revenue, the book still being worked, and four lead lists that each say why a lead is on them. The ticks track the journey from Contacted to Signed up, Injected, Live and Converted.Mockup · illustrative data
● nucleus.example.com/apps/protolyth/campaigns/spring/review
protolyth ReviewBrief & runsOutcomes PROSPECTORLiveJ
needs youblockingclearapprovedreplied
example-yoga.com1 advisorydraft r3
atelier-example.fr1 blocking
example-gallery.itdraft r2 approved
shop.example.dereplied · interested
studio-example.com2 advisory
Check in a real browserParkReject
CONTENTIONS
advisory locales_disabled
Quote covers 4 languages; 1 is switched off on the live site.
EVIDENCE
Organization
Example Yoga Studio
Site seen?
yes observed
Script live
yes observed
Competitor
none detected
Locales
en, de, fr, es
Pageviews / mo
41,200 vendor
Foreign share
38%
Suggested tier
Core
r3 · pending · by claudenewer revision r3 arrived
Subject
Your four languages, on the new platform
Hook (the opening sentence)
Six years of German and French visitors is worth carrying over intact.
Body
Hi Dana, your site has served visitors in four languages since…
…
Approve & queueSave revisionAsk Claude to rewrite
● draft updated by Claude, just now
Review. The queue, the evidence and the draft side by side. A teammate asked Claude to rewrite the hook, and revision r3 appeared on this screen about a second later.Mockup · illustrative data
03

One set of rules, reached two ways

The app's API and the MCP tools run in the same process and call the same database functions. A person clicking Approve and Claude calling the tool can't get different answers, because there's only one implementation to disagree with.

A personThe web app

Clicks Approve in the review screen

→
One implementationThe app's server

Same functions, same validation, same contentions, written as the person who acted

←
Claude, a workflow, a webhookMCP tools

Calls approve_draft through Nucleus

Every write lands in a change feed, whoever made it. The app streams that feed, so a draft Claude rewrites, a lead a workflow claims or a reply a webhook records appears on everyone's screen within about a second, with a notice saying who changed it. People and agents can work in the same app at the same time.
04

What Nucleus gives every app

Hosting an app is a general platform feature, not something built for Protolyth. Registering one is configuration: an app name and an internal address on the MCP server's catalog entry.

Sign-in

Nucleus authenticates first

The app is reached through Nucleus at /apps/<name>/. Its API is served only after Nucleus has signed the person in, so the app never builds a login of its own.

Access

Only people who have it installed

On every request, Nucleus checks that the person has the app's server installed. Removing the install removes access to the app.

Identity

A real name on every write

Identity headers sent by the browser are stripped and replaced with the ones Nucleus vouches for, the same ones it sends to the MCP server.

Isolation

No public address of its own

The app container has no published port and no public route. The only way in is through Nucleus, and an app can only point at internal services.

Live

Websockets included

Live connections go through the same authenticated path and are refused if they come from another site. That's what keeps the review screen in sync with Claude.

Launcher

It shows up in Nucleus

Each person's Apps list shows the apps for the servers they have installed, and each app links back to Nucleus.

See what it does

Protolyth runs a real lead pipeline. Here's the enrichment behind it.