# Axiom Documentation > Documentation for Axiom: a language-agnostic, multi-tenant, low-latency flow execution platform. Write a function, publish it, compose type-safe flows, invoke them via API. ## Getting started - [Install the Axiom CLI](/docs/getting-started/installation): Install the axiom CLI with Homebrew or the curl install script, authenticate with axiom login, and confirm your identity and tenant with axiom whoami. - [Write your first node](/docs/getting-started/first-node): Scaffold a package with axiom init, create a Python node, and iterate locally with axiom validate, axiom test, and the axiom dev hot-reload server. - [Run your first flow](/docs/getting-started/first-flow): Push your package with axiom push, import its nodes into the canvas editor, connect them into a flow, and run it from the editor. - [Invoke a flow via API](/docs/getting-started/invoke-via-api): Create an API key, copy the ready-made curl command from the Use via API dialog, and call your compiled flow over HTTP — one-shot or as an SSE stream. ## Concepts - [Nodes, packages, and flows](/docs/concepts/nodes-packages-flows): Axiom's core object model — how messages, nodes, packages, flows, executions, and the entry and terminal nodes relate to each other. - [The type system](/docs/concepts/type-system): How Protocol Buffers define every contract in Axiom: messages as node inputs and outputs, importing types from other packages with axiom import, and how the canvas keeps edges type-safe. - [Execution model](/docs/concepts/execution-model): How Axiom runs a flow: immutable compiled artifacts, unary vs pipeline (SSE) invocation, the Executions list and detail pages, and durable resume after worker failure. - [Sandboxing and tenancy](/docs/concepts/sandboxing-and-tenancy): What node code can and cannot do at runtime: the sidecar is a node's only channel to the platform, and tenant isolation is enforced by the platform — never by your code. ## Guides - [Create a node in Python](/docs/guides/create-a-node-python): Scaffold a Python package, define protobuf messages, implement a typed node function with AxiomContext, test it with pytest, and push it to Axiom. - [Create a node in Go](/docs/guides/create-a-node-go): Scaffold a Go node with the Axiom CLI, implement the handler against generated protobuf types, test it, and run it locally with hot reload. - [Create a node in TypeScript](/docs/guides/create-a-node-typescript): Scaffold, implement, test, and push a TypeScript node with the Axiom CLI, using google-protobuf message classes and AxiomContext. - [Create a node in Rust](/docs/guides/create-a-node-rust): Scaffold a Rust node package, implement the handler against the AxiomContext trait, run cargo-based tests with axiom test, and push it to the platform. - [Create a node in Java](/docs/guides/create-a-node-java): Scaffold a Java package and node with the Axiom CLI, implement the handler against AxiomContext, test it with Maven, and push it to the platform. - [Create a node in C#](/docs/guides/create-a-node-csharp): Scaffold a C# package, implement a unary or pipeline node against IAxiomContext, and run xUnit tests with axiom test — codegen happens at dotnet build via Grpc.Tools. - [Import message types from another package](/docs/guides/import-package-types): Find a published package with axiom search and axiom info, pull its message types into your package with axiom import, and use them as node inputs and outputs. - [Configure an Instance from a Generic node](/docs/guides/configure-an-instance): Bind a Generic node's port to a real type in the console wizard or with axiom instance create — author nested message-typed fields, toggle repeated/optional, and preview a mapping's exact output before you save. - [Manage secrets in a flow](/docs/guides/manage-secrets): Store an API key on the console's Secrets page, read it from node code with ax.secrets.get, and know exactly what is and is not encrypted. - [Set per-flow config values](/docs/guides/flow-configs): Create flow config profiles in the console — secret overrides — pick one in the Run dialog or via config_id, and see how resolved values reach nodes. - [Publish a flow to the marketplace](/docs/guides/publish-a-flow): Compile a flow.yaml with axiom flow compile, then promote the artifact to the public marketplace with axiom flow publish so other tenants can fork it or import it as a subflow. - [Debug a flow](/docs/guides/debug-a-flow): Start a debug session with breakpoints and pause/step controls, inspect each node's input and output on the canvas, and replay any past execution on its detail page. - [Use the interactive API docs](/docs/guides/use-interactive-api-docs): Open generated, interactive OpenAPI docs for any flow from the inspector's API section, send test requests from the browser, and fetch the raw openapi.json for codegen. - [Build a client SDK](/docs/guides/build-a-client-sdk): Bundle marketplace nodes and flows into a client — in Console → Client Builder or headlessly with `axiom client` — build it into a typed SDK in up to six languages, and call it with an API key from the environment. - [Create and manage API keys](/docs/guides/api-keys): Mint, use, and revoke API keys in Console → API Keys, understand what a key can access, and read the Usage page's execution stats. - [Author and consume packages and flows with Claude Code](/docs/guides/author-with-claude-code): Install Axiom's Skills into Claude Code with axiom skills install so your agent knows the create→validate→push→publish authoring loop AND the search→inspect→source→invoke loop for using published nodes, then drives the axiom CLI through the shell. - [Use Axiom from any MCP client (hosted MCP server)](/docs/guides/hosted-mcp-server): Add Axiom's hosted MCP server in any MCP client, authenticate with an Axiom API key, and search the catalog, inspect schemas, read a node's source, invoke nodes and flows, and pin favorites as typed tools — without installing the CLI. - [Send feedback and propose marketplace artifacts](/docs/guides/send-feedback-and-propose): Tell Axiom what to build or fix, and request a package, node, or flow that doesn't exist yet — from the editor's feedback dialog, the axiom CLI (axiom feedback / axiom propose), or an MCP client. Every submission feeds the roadmap review. ## Reference - [axiom](/docs/reference/cli/axiom): Axiom CLI — build and push node packages - [axiom build](/docs/reference/cli/axiom-build): Build a local Docker image identical to the publish pipeline - [axiom client](/docs/reference/cli/axiom-client): Create and manage Client Builder clients (typed SDKs) - [axiom client add](/docs/reference/cli/axiom-client-add): Add a marketplace node or a saved flow as a client member - [axiom client build](/docs/reference/cli/axiom-client-build): Build an SDK for a client in one or more languages - [axiom client create](/docs/reference/cli/axiom-client-create): Create a new, empty Client Builder client - [axiom client download](/docs/reference/cli/axiom-client-download): Download a succeeded build's SDK zip - [axiom client get](/docs/reference/cli/axiom-client-get): Show one Client Builder client - [axiom client list](/docs/reference/cli/axiom-client-list): List your tenant's Client Builder clients - [axiom client members](/docs/reference/cli/axiom-client-members): List a client's members - [axiom client remove-member](/docs/reference/cli/axiom-client-remove-member): Remove a member from a client's draft - [axiom client status](/docs/reference/cli/axiom-client-status): Show a client version's per-language build status - [axiom client sync](/docs/reference/cli/axiom-client-sync): Reconcile a client to match a declarative axiom-client.yaml manifest - [axiom create](/docs/reference/cli/axiom-create): Create Axiom resources - [axiom create message](/docs/reference/cli/axiom-create-message): Scaffold a new protobuf message in messages/messages.proto - [axiom create node](/docs/reference/cli/axiom-create-node): Scaffold a new node in nodes/ - [axiom dev](/docs/reference/cli/axiom-dev): Start a local development server with hot reload - [axiom doctor](/docs/reference/cli/axiom-doctor): Check the local toolchain needed to build and test Axiom packages - [axiom feedback](/docs/reference/cli/axiom-feedback): Send Axiom a bug report, feature request, or general feedback - [axiom flow](/docs/reference/cli/axiom-flow): Author and compile flows (graphs of published nodes) - [axiom flow compile](/docs/reference/cli/axiom-flow-compile): Resolve nodes, lay out, and compile a runnable flow artifact - [axiom flow layout](/docs/reference/cli/axiom-flow-layout): Auto-position nodes on the grid and write col/row back - [axiom flow mapping-scope](/docs/reference/cli/axiom-flow-mapping-scope): Show the CEL variables and functions in scope for an edge mapping - [axiom flow new](/docs/reference/cli/axiom-flow-new): Scaffold a starter flow.yaml - [axiom flow preview](/docs/reference/cli/axiom-flow-preview): Preview the exact value(s) a mapping produces for sample input - [axiom flow publish](/docs/reference/cli/axiom-flow-publish): Publish a flow document to the public marketplace - [axiom flow pull](/docs/reference/cli/axiom-flow-pull): Materialize an existing compiled flow into an editable flow.yaml - [axiom flow run](/docs/reference/cli/axiom-flow-run): Invoke a compiled flow and print its result - [axiom flow save](/docs/reference/cli/axiom-flow-save): Save a flow as an editor document openable in the visual editor - [axiom flow validate](/docs/reference/cli/axiom-flow-validate): Validate a flow.yaml's structure (local checks) - [axiom generate](/docs/reference/cli/axiom-generate): Compile .proto files into language bindings - [axiom import](/docs/reference/cli/axiom-import): Import proto definitions from a published package - [axiom info](/docs/reference/cli/axiom-info): Show package details, nodes, messages, and live endpoint - [axiom init](/docs/reference/cli/axiom-init): Initialize a new Axiom package - [axiom inspect](/docs/reference/cli/axiom-inspect): Print the compiled JSON Schema for a node or flow (the shape an invoke must satisfy) - [axiom inspect flow](/docs/reference/cli/axiom-inspect-flow): Print a compiled flow's OpenAPI spec (its input schema) - [axiom inspect node](/docs/reference/cli/axiom-inspect-node): Print a published node's compiled input/output JSON Schema - [axiom instance](/docs/reference/cli/axiom-instance): Create Instances from a Generic node (type-bind, no build, no deploy) - [axiom instance create](/docs/reference/cli/axiom-instance-create): Create a new Instance from a Generic node - [axiom instance preview](/docs/reference/cli/axiom-instance-preview): Preview the exact output a mapping produces, including not-yet-real (drafted) messages - [axiom invoke](/docs/reference/cli/axiom-invoke): Invoke a published node directly and print its raw JSON response - [axiom list-my-tools](/docs/reference/cli/axiom-list-my-tools): List the nodes and flows you have pinned - [axiom login](/docs/reference/cli/axiom-login): Authenticate with the Axiom platform - [axiom pin](/docs/reference/cli/axiom-pin): Pin a node or flow as a favorite tool - [axiom pin flow](/docs/reference/cli/axiom-pin-flow): Pin a flow as a favorite tool - [axiom pin node](/docs/reference/cli/axiom-pin-node): Pin a node as a favorite tool - [axiom propose](/docs/reference/cli/axiom-propose): Propose a new package, node, or flow for the Axiom marketplace - [axiom publish](/docs/reference/cli/axiom-publish): Publish a pushed package to the public marketplace - [axiom push](/docs/reference/cli/axiom-push): Push the package to the Axiom platform (tenant-private) - [axiom remove](/docs/reference/cli/axiom-remove): Remove Axiom resources - [axiom remove node](/docs/reference/cli/axiom-remove-node): Remove a node from nodes/ and axiom.yaml - [axiom search](/docs/reference/cli/axiom-search): Search the Axiom package marketplace - [axiom skills](/docs/reference/cli/axiom-skills): Manage the Axiom Skills for Claude Code - [axiom skills install](/docs/reference/cli/axiom-skills-install): Install the Axiom authoring Skills into a Claude Code skills directory - [axiom skills list](/docs/reference/cli/axiom-skills-list): List the Skills bundled in this CLI - [axiom source](/docs/reference/cli/axiom-source): Print a node's handler source code and a link to its full repository - [axiom source node](/docs/reference/cli/axiom-source-node): Print a published node's handler source and repository link - [axiom test](/docs/reference/cli/axiom-test): Run language-native tests with axiom validation - [axiom unpin](/docs/reference/cli/axiom-unpin): Unpin a node or flow - [axiom unpin flow](/docs/reference/cli/axiom-unpin-flow): Unpin a flow - [axiom unpin node](/docs/reference/cli/axiom-unpin-node): Unpin a node - [axiom validate](/docs/reference/cli/axiom-validate): Validate axiom.yaml, proto definitions, and node signatures - [axiom version](/docs/reference/cli/axiom-version): Print the axiom CLI version - [axiom whoami](/docs/reference/cli/axiom-whoami): Show the current authenticated user - [axiom.yaml manifest reference](/docs/reference/axiom-yaml): The complete schema of the axiom.yaml package manifest: every field, its type, default, validation rule, and which CLI commands read or write it. - [Python SDK reference](/docs/reference/sdk/python): Complete reference for the ax parameter in Python nodes: structured logging with ax.log, secrets with ax.secrets, and flow reflection with ax.reflection.flow. - [Go SDK reference](/docs/reference/sdk/go): Every capability on axiom.Context — the Go form of AxiomContext: structured logging, secrets, execution identity, flow reflection, and flow mutation, with full signatures. - [TypeScript SDK reference](/docs/reference/sdk/typescript): Complete reference for AxiomContext in TypeScript — logging, secrets, flow reflection, flow mutation, execution identifiers, and handler signatures. - [HTTP API reference](/docs/reference/http-api): Every invocation endpoint — flow invoke, SSE streaming, single-node calls, pre-warm — plus the Client Builder management API, Instance creation, adapter-mapping preview, with authentication, request and response fields, rate limits and daily quotas, and the structured error envelope. - [CEL expressions](/docs/reference/cel-expressions): Every place a CEL expression appears in Axiom — the compose-mapping formula bar, the edge-adapter cel() transform, a gate condition's CEL op, and a HITL node's interrupt_payload_template — the value/srcField bindings, the inputs.. multi-source syntax, the built-in string functions, and Axiom's two custom functions toUpper/toLower. - [Error catalog](/docs/reference/error-catalog): Every user-facing Axiom error — flow run failures in the editor, edge transform errors, and HTTP API error responses — with what causes each one and how to fix it. - [Glossary](/docs/reference/glossary): Canonical definitions for every Axiom term — the single authority for terminology used across the docs, the CLI, the canvas, and the API. ## Releases - [Axiom CLI v0.2.0 release notes](/docs/releases/cli-v0.2.0): What's new in the v0.2.0 Axiom CLI: the new axiom client command group, breaking changes, and other changes since v0.1.1. ## Machine-readable specs - [Flow OpenAPI (per flow, on demand)](/api/graphs/{artifact_id}/openapi.json): OpenAPI 3 spec generated on demand for any published flow; substitute the flow's artifact id (ADR-061). - [axiom.yaml manifest schema](/docs/reference/axiom-yaml.md): Raw markdown reference for the package manifest schema.