Getting Started Overview
This overview explains what it means to get started with Asset Core and how to approach the system effectively.
Who this is for
Anyone new to Asset Core who wants to understand the minimal components required to run the system and send their first transaction.
What you will learn
- The four essential components: write daemon, read daemon, commit log, and client
- How data flows through the system
- What “success” looks like for a first interaction
When to use this
Read this before attempting to run Asset Core locally or integrate it into your application. This overview provides the mental model needed to understand subsequent guides.
High-level structure
Asset Core uses a write/read split architecture with event sourcing as the source of truth:
┌──────────────┐ ┌──────────────┐
│ Write Daemon │ │ Read Daemon │
│ POST /commit │ │ GET /read/* │
└──────┬───────┘ └──────▲───────┘
│ │
│ Events │ Tail + Apply
▼ │
┌───────────────────────────┴──┐
│ Commit Log (Events) │
│ (sealed batches, durable) │
└──────────────────────────────┘
Write Daemon
The write daemon accepts HTTP POST requests to /v1/commit. It:
- Validates incoming transactions
- Executes operations against the runtime
- Seals events into batches
- Persists batches to the commit log
The write daemon is the only component that mutates state. It enforces single-writer semantics for determinism.
Read Daemon
The read daemon serves HTTP GET queries. It:
- Tails the commit log for new batches
- Applies events via deterministic replay
- Publishes zero-copy snapshots
- Reports freshness metadata
Queries return point-in-time projections with information about how recent the data is.
Commit Log
The commit log is the durable event store:
- Append-only log of sealed event batches
- Source of truth for all state
- Enables deterministic replay for recovery
- Supports checkpointing for fast startup
Both daemons interact with the same commit log, ensuring consistency.
Client
Any HTTP client can interact with Asset Core:
- Send transactions to the write daemon
- Query state from the read daemon
- Use idempotency keys for safe retries
The Python SDK provides typed helpers, but raw HTTP works for any language.
The Goal
Getting started means:
- Running both daemons locally
- Sending a commit that creates a container and adds balance
- Reading back the state to confirm the commit was applied
This validates that your environment is working and gives you a foundation for more complex experiments.
Next steps
- First Commit and Read - Step-by-step guide with HTTP examples
- Using the Python SDK - Same workflow with typed Python helpers