Declare the application. Ship the application.
The Application Framework builds complete applications on the platform declaratively, with no hand-written plumbing and no separate deployment pipeline to maintain.
One framework, from intent to running application #
Most internal software is ninety per cent plumbing: forms, tables, permissions, background jobs, deployment, rollback, audit. The part that is actually specific to your organisation is the last ten per cent, and it is the part that never gets enough attention. The framework inverts that.
Every authoring mode compiles to the same application definition, and every definition produces the same deterministic bundle, so an application written in the SDK, drawn in the visual builder or generated by an agent is the same kind of thing to the platform. That is also what makes AI-authored software safe to run: the least-trusted tier is already sandboxed with no ambient access, so an agent-written application is not a special exception, just an application at the trust level that gets the strongest containment.
You write the ten per cent that is yours. The framework writes the ninety per cent that is everybody's.
What the framework does #
Four ideas carry it. Everything else is detail.
Declare it, do not wire it #
You declare the pages, blocks, queries, workflows and capabilities. The framework emits the frontend, the typed helpers and the route metadata.
- Typed Python SDK
- No-code block specification
- Plain-language brief, written by an agent
Compose from blocks that are already finished #
Forms, dashboards, document libraries, review queues, boards and timelines arrive with their data wiring, their states and their accessibility already built in.
- Interface blocks with every state handled
- A grounded agent as a drop-in block
- Malformed blocks fail at construction
Nothing runs that cannot be traced #
An application compiles into one content-addressed package, with a signed provenance attestation and a component inventory checked before anything loads.
- Deterministic, content-addressed packaging
- Standards-based bill of materials
- Verified before load, every time
Trust decides where code may run #
Every application carries a trust level, and admission rules map each level to the runtimes it is allowed on. Every other combination is refused at execution.
- Shared, dedicated and sandboxed hosts
- No ambient access in the sandbox
- Fail-closed admission, with a stable reason
What you actually write #
A complete departmental application: a page, two blocks, a query the platform publishes on every protocol, and one operation agents are allowed to call.
from agentycs_sdk import App
from agentycs_sdk.blocks import ReviewQueue
app = App(
"supplier-invoices",
name="Supplier Invoices",
version="1.4.0",
capabilities=["app.supplier-invoices.access", "atom.query", "workflow.run"],
)
app.route("/queue", title="Approval queue") # a page
overdue = app.api_query("overdue_invoices") # a query, on every protocol
app.expose_mcp("approve_invoice") # an operation agents may call
app.add_block( # a block, states included
ReviewQueue(
id="approval-queue",
title="Unapproved invoices",
queue=overdue,
actions=["approve_invoice", "request_changes"],
)
) frontend routes, blocks, states, typed API helpers and DTOs
real time supplier-invoices.overdue_invoices, snapshot then diffs
REST GET /api/apps/supplier-invoices/rest/queries/overdue_invoices
POST /api/apps/supplier-invoices/rest/mutations/approve_invoice
tools POST /api/apps/supplier-invoices/mcp, capability-checked
package content-addressed, plus provenance, inventory and signature In more detail #
The full capability surface, grouped by the job it does.
Block catalogue
Compose ready-made, production-grade building blocks instead of building interfaces from scratch.
- Interface blocks
- Forms, dashboards, document libraries, review queues, kanban boards, timelines, metrics grids, data explorers, settings and embeds, each with loading, empty, error and optimistic states built in.
- Agent block
- A conversational agent as a drop-in block, wired to tools, search and capabilities, so any application can embed a grounded assistant.
- Layout primitives
- Stacks, grids, tabs, splits and sidebars for arranging blocks into complete, navigable applications.
- Validation at construction
- Fail-loud validation means a malformed block cannot ship. It is the contract the generator and the runtime both agree on.
What applications can call
The same primitives behind first-party products, exposed safely and tenant-scoped to every application.
- Durable workflows
- Long-running, replayable workflows and scheduled timers behind your application logic, on the platform's durable engine.
- One authorisation decision
- Every privileged operation resolves through a single audited decision that consolidates role, capability and attribute rules.
- Models, agents and tools
- Typed access to agents and models under tenant policy, plus platform and external tools over the Model Context Protocol, each gated by a per-tool capability check.
- Search, data, secrets and effects
- Hybrid search and retrieval, tenant data, files, key-value state and secrets, all tenant-scoped and access-checked, alongside declared idempotent side effects with metrics and tracing built in.
Generation and packaging
Declarations become a real, running frontend, and the same input always produces the same output.
- One neutral representation
- Routes, layouts, blocks and agent declarations compile to a stable intermediate form: the contract between authoring and generation.
- Generated frontend
- The bundle, typed API helpers, data transfer objects and route metadata are emitted for you. This is the plumbing authors never write.
- Reproducible builds
- Identical input yields a byte-identical bundle and digest, with golden snapshots failing any unintended drift.
- Deterministic packaging
- An application compiles into one content-addressed package of manifest, sorted files and hashes. That package is the unit of deployment, held in a registry alongside its attestations, inventories and signatures.
Trust, isolation and hosts
First-party, tenant and AI-authored code share one platform safely, because trust decides where code may run.
- Four trust levels
- Every application carries a trust level, from first-party signed through tenant-trusted and tenant-untrusted to AI-authored, and that level governs how strongly it must be isolated.
- Fail-closed admission
- Admission rules map each trust level to the runtime profiles it is allowed on and refuse every other combination at the moment of execution, with a stable reason, recorded.
- Shared, dedicated and sandboxed hosts
- A pooled in-process host for trusted applications, one hardened pod per tenant and application with deny-by-default egress and a non-root read-only filesystem, and a WebAssembly sandbox with no ambient access for untrusted and AI-authored code.
- Common execution boundary
- Import allowlists, bounded deadlines, resource quotas and per-run cleanup on every host, so nothing can exceed its envelope, with every privileged action correlated to the identity behind it.
Lifecycle and operations
Applications are deployed and operated like any other platform resource.
- Declared as a resource
- One resource captures an application's artefact, routing, trust profile and rollout, and the platform reconciles it into a running application.
- Continuous delivery
- A push to an application's repository builds, generates, packages, signs and attests a new artefact, ready to roll out with no manual steps.
- Canary and rollback
- New versions take a controlled, weighted share of traffic and are watched before full promotion, with sub-second revert to the last known-good version the moment a regression appears.
- Automatic quarantine
- An application that crash-loops or fails verification is isolated automatically, protecting the rest of the runtime pool.
What teams build with it #
The framework also carries the platform's own first-party applications, on exactly the path your teams use.
Operational applications
Review queues, case management, approvals, document libraries and dashboards over your own data, composed from blocks rather than built from scratch.
Grounded assistants
Drop a conversational agent into an application, wired to search, tools and capabilities, so it answers from your data and can act under permission.
Applications written by agents
Hand a brief to the Agent² Software Factory and get a sandboxed, signed, attested application you can inspect, canary and roll back.
Surfaces and interfaces #
Every application is exposed identically over the platform's protocols, and every path enforces the same access checks.
- Typed Python SDK
- Block specification
- Real time and REST
- MCP tools
What each interface gives you
- Typed Python SDK
- The pro-code authoring surface, schema-exporting so tools and generated code stay in lockstep.
- Block specification
- A declarative description of a whole application, for the visual builder and for agents writing applications.
- Real time and REST
- Live queries with snapshot and diff updates, plus a generated REST facade over every query and mutation, kept in authorisation parity.
- MCP tools
- Each application's operations are available to agents as tools, gated by the same per-operation checks as any other caller.
Bring us an application backlog
Tell us what your teams are waiting for and who would build it. We will show you how much of it the framework already does.