[ AxiomCore · Documentation ]
What is Acore?
Acore is AxiomCore's declarative language for describing APIs, UIs, databases and packages as typed contracts.
Acore is AxiomCore's independent, declarative language for describing software
contracts. It has typed declarations, composition, validation, a standard
library, diagnostics and editor support. A .acore file is source code. It is
not the artifact a consumer locks and runs; the Axiom CLI builds that from it.
A small example
This file defines a model, an action that returns it, and a public endpoint that runs the action:
project(id: "docs.hello", version: "1.0.0")
variant default(include: ["*"])
model Greeting { message: String }
action hello(kind: ActionKind.query, output: Models.Greeting) {
managed { return {message: "Hello from Acore"} }
}
endpoint hello(method: GET, path: "/hello") {
handle(action: Actions.hello)
response(type: Models.Greeting)
}axiom check main.acore validates it, and axiom build turns it into a
.axiom contract. Build your first API
runs it.
What Acore can describe
- Backend routes, models, caching, retry, authentication, validation, streaming and mock behavior.
- Durable domain entities, relationships, invariants, projections and security declarations.
- Acore UI trees: typed text and layout, interactions, effects, assets and target-specific application builds.
- Use of typed theme and component-library packages.
- Versioned package boundaries for services, themes, component libraries, database schemas, extensions and application policies.
Not every kind has the same authoring or runtime surface yet. The support matrix gives the current boundary.
Source, contract and application
Diagram source
flowchart LR
A[.acore source] -->|axiom build| B[.axiom contract or package]
B -->|pinned in a lock| C[Consumers]
A -->|axiom ui build| D[.axiomapp application]| File | Purpose | Can a consumer change it? |
|---|---|---|
.acore | Declarative source written by people or agents | Yes, inside the source owner's build |
.axiom | Canonical, versioned contract or package | No; select a version and lock it |
.axiomapp | Built UI application for one or more targets | No; rebuild from source and dependencies |
Composition keywords
import "./shared.acore"
amends "axiom-fastapi:./app.py:app"
use contract Billing from "billing" audience "mobile"
use theme AppTheme from "design-system" export "default"| Keyword | What it does |
|---|---|
import | Reuses trusted source within one build |
amends | Composes an Acore file or a supported extractor input before building |
use contract | Consumes a compiled service contract selected by a committed dependency lock |
use theme, use component | Bind verified exports from typed packages |
extend | Inherits or promotes a declared value; it does not load a file |
Imports, amends and variants covers ownership and trust boundaries.
Acore is optional at integration edges
You do not have to rewrite an application. Existing Python and Go services take part through supported extractors. Existing web, React, Flutter and Swift apps keep their current integration paths. Use Acore where declarative behavior and auditable composition help.