Introduction

[ 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:

main.acore
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

Acore source builds into a locked contract or a packaged application
Acore source builds into a locked contract or a packaged 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]
FilePurposeCan a consumer change it?
.acoreDeclarative source written by people or agentsYes, inside the source owner's build
.axiomCanonical, versioned contract or packageNo; select a version and lock it
.axiomappBuilt UI application for one or more targetsNo; rebuild from source and dependencies

Composition keywords

Conceptual example
import "./shared.acore"
amends "axiom-fastapi:./app.py:app"
use contract Billing from "billing" audience "mobile"
use theme AppTheme from "design-system" export "default"
KeywordWhat it does
importReuses trusted source within one build
amendsComposes an Acore file or a supported extractor input before building
use contractConsumes a compiled service contract selected by a committed dependency lock
use theme, use componentBind verified exports from typed packages
extendInherits 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.

Next steps