A living graph where every client, deal, project, and dollar becomes one explorable map. See the company grow from day one to full operation.
Amolfi Labs
We're building the operating layer a company runs on. Not another tool to check — the surface the work happens on: every record connected, agents that act with receipts, a human approval on everything that matters. Built in the open.
Building Security for the Future
The control chain around your workspace. Roles, boundaries, signed links, and receipts form one auditable path.
Ontology
The operating model behind your business. It defines the objects, relationships, and lifecycles the Brain and governed agents reason from.
API contract
The resource contract behind Amolfi’s authenticated API. Browse implemented paths and payload shapes. A public base URL is not published yet.
Browse the contractShipping continuously
Small improvements, released in public. The latest note shows what changed and what we learned.
- Sep 27Introducing Amolfi Pear
Roadmap
Keep an idea for what should ship next. Ideas saved here stay on this device until the shared roadmap ships.
Ideas on the bench
No ideas saved on this device yet.
Lab notes
A monthly build note we’re preparing. Save your email on this device while delivery is being wired.
Saved only in this browser. This does not join a mailing list or send your address to Amolfi.
The hard part
The problems worth being honest about
Letting software act on a real business is genuinely hard, and we'd rather show the seams than hide them. None of these are solved by a bigger model — they're solved by the layer around it, and that layer is the actual work of the lab.
Moving a live business off Firestore — with zero downtime
The hard part
You can't take a multi-tenant SaaS offline to swap its database. Around 37 collections of live customer data had to move from Firestore to Aurora Postgres while the app kept reading and writing every second — with no moment where a write lands in the old store and a read hits the new one.
Our approach
Migrated wave by wave behind one signed bridge, kept the old listeners only as an on-error fallback during each cutover, then verified row counts and checksums identical across dev, staging, and prod before retiring the old path.
docs/unified-data-spine/full-aws-execution-plan.mdTenant isolation enforced by the database, not the app
The hard part
In a shared database, one missed org_id filter is a cross-customer leak — and every new query is a fresh chance to forget it. The isolation has to hold even against a bug, and survive a connection reused across tenants.
Our approach
Every tenant-scoped table runs Postgres FORCE ROW LEVEL SECURITY. All access goes through a transaction that sets a transaction-local org id, so the database — not the application code — refuses any row from another tenant.
infra/lambda/shared/db.tsReal-time updates without a database that pushes
The hard part
Firestore gave live updates for free; Aurora does not push. The naive replacement — write the row, then publish an event — risks the classic dual-write failure: the publish is lost or the transaction rolls back, and one client's screen silently disagrees with the database.
Our approach
The write and a domain-event row commit in the same transaction; a worker drains that transactional outbox to AppSync subscriptions with per-consumer idempotency and retry — so an event lands exactly where it should, even if a step fails mid-flight.
functions/db/migrations/0027_foundation_outbox_messages.sqlAgents that act on the real system — with receipts
The hard part
An assistant that only talks is safe but limited; one that can start a campaign, move a deal, or send money is dangerous the moment it is wrong or manipulated. The hard part is letting an agent reach the same real action handlers a human clicks, while it can never do something the asking user could not.
Our approach
Agents only re-enter the existing action handlers as the resolved requester — never the database directly — through a gate where reads run inline, low-risk writes follow the workspace autonomy setting, and high-risk actions become a human approval card. Every run leaves an attributable receipt.
infra/lambda/kernel/native-tools.tsShared AI memory that never leaks need-to-know data
The hard part
A company memory is only safe if a junior's agent can't extract a finance secret a summary happened to absorb. Filtering results after the fact still leaks through ranking and counts; a cross-scope summary can carry a secret its reader can't access the source of.
Our approach
Memory carries no access list of its own — each record inherits its source’s scope, the permission filter runs inside the SQL search rather than after it, and derived memory inherits the strictest of its inputs. A standing red-team probe proves a low-scope requester reaches no high-scope record.
infra/lambda/kernel/scopes.tsOne platform that fits many trades — without forking
The hard part
A marketing agency's project is a cabinet shop's job is a consultancy's engagement. Hard-code one schema and the product fits one vertical and fights every other one.
Our approach
Every org boots on a base ontology pack, then layers capability and per-industry overlay packs validated at load — so a vertical is data, an overlay over the same engine, not a fork of the platform.
infra/lambda/ontology-packs.tsA signed gateway that can't be spoofed or replayed
The hard part
Splitting the system across Firebase for auth and AWS for data creates a trust seam: every request crossing it must be provably from the real bridge — not forged, replayed later, or altered in transit.
Our approach
Every call carries an HMAC signature over its timestamp, method, and exact body, verified with a constant-time compare and a five-minute freshness window — so a captured request cannot be replayed.
infra/lambda/shared/bridge-auth.tsIn the lab
What we're building, and where it stands
The whole operating system in motion — some live, some in progress, some still on the bench. We mark each piece honestly, because a roadmap you can trust is worth more than one that only sounds finished.
Unified Data Spine
The whole platform runs on Aurora Postgres, Lambda, and AppSync behind one signed bridge — the Firestore listener loop is gone and prod matches staging.
LiveChat — the One Surface
A messaging fabric where humans and governed agents share rooms and DMs, with meetings, transcription, search, and attachments.
LivePlaybooks
Company knowledge turned into execution — a library with assignments, progress, and step types for acknowledgement, quiz, review, and proof upload.
LiveMarketing specialist & Social Operator
The Marketing specialist and Social Operator turn ideas into platform-specific drafts, route approvals, and publish only after owner confirmation.
LiveFinance specialist
A cash-basis finance workspace with accounts, transactions, imports, categorization, matching, reports, and governed Finance specialist actions.
LiveContracts & e-signing
The live contracts register combines approved templates, contract drafting, embedded e-signature preparation, and lifecycle tracking — never legal advice.
LiveBilling & subscriptions
Self-serve workspace plans, Stripe Checkout, and payment-confirmed entitlements, with subscription controls inside the workspace.
LiveNewsletter Operator
The Newsletter Operator supports consented lists, authenticated sending domains, campaign drafts, and owner-approved sends under the Marketing specialist.
LiveAgent OS
A governance kernel that lets a chat line trigger real platform actions safely — scoped by who is asking, allowlist-checked in SQL, with receipts on every run.
In progressCompany Brain & Ontology
An org-scoped semantic model of each business — objects, relationships, and rules — that grounds governed agents in what a company actually is.
In progressFiles Creation Suite
Docs, AI-generated custom views, and a publisher — with generated views sandboxed against data exfiltration.
In progressAmolfi Code
A governed coding agent — connect a repo and Dev Amo reads it with your business context and opens PRs through the same approval cards as every other seat.
In progressFor developers
API contract
Browse selected implemented resource paths and example payloads. The customer-facing base URL is not published yet.
The authenticated API currently covers tasks, contacts, deals, accounts, calendar events, and form submissions. The paths below document that contract; they are not a copy-and-paste public endpoint.
One workspace token — amolfi_sk_… — minted in-app, shown once, hashed at rest. It carries the workspace inside the credential and dies with the minting member’s access.
Four signed CRM events today (deal and contact, created and updated) — HMAC-signed payloads with retry. Nothing broader is promised until it exists.
Forward email to a workspace address to create tasks automatically.
API reference
Returns the resource object.
Returns the resource object.
Returns the resource object.
Use Amolfi now
The lab ships continuously. Amolfi is live and in use. Choose a workspace plan today, then follow the build as new capabilities move from the bench into the product.