# Getting Started

EXOCHAIN exposes credentialing and custody primitives via the `exochain-sdk` Rust crate and the `exo-gateway` REST/GraphQL surface. This guide walks you through registering an actor, issuing an AVC, and emitting your first trust receipt.

## Prerequisites

- Rust 1.78+ and a Cargo workspace.
- An EXOCHAIN extranet account (request one at `/contact`).
- An API key created from `/app/api-keys`.

## Install

Add the SDK and a runtime to your `Cargo.toml`, then create a client. The client uses your API key to authenticate gateway requests; never embed it in client-side code.

## Register an actor

Actors include humans, organizations, agents, holons, services, and validators. The actor your code represents is the _subject_ of the AVC you'll issue next.

## Issue an AVC

Specify a policy domain, an action set, optional constraints, and a validity window. Sign with your issuer key. The SDK returns the AVC token and metadata.

## Validate

Validation runs deterministically and fails closed. Always validate before acting; never embed AVC trust into business logic without consulting the validator.

## Emit a trust receipt

After every authorized action, emit a trust receipt referencing the AVC and the action descriptor. The receipt becomes part of the custody trail.

## Optional: settle

Request a settlement quote on the receipt. Under the launch policy the amount will be `0 EXO` with a `ZeroFeeReason`. Commit the quote to record a settlement receipt.
