- python 3.10 and above - High-level general-purpose programming language
- pip - package installer for Python
- docker - build, deploy run, update and manage containerized applications
You can use aesir simply by installing via pip on your Terminal.
pip install aesirAnd then you can begin deploying local cluster as such:
aesir deployThe initial deployment may take some time at pulling required images from their respective repositories. Results may look as such:
$ pip install aesir
> ...
> Installing collected packages: aesir
> Successfully installed aesir-0.4.3
$ aesir deploy
> Deploy specified local cluster: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01
> Generate addresses: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
> Mine initial capital for parties: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00You will have podman containers running in the backend, ready to be interfaced by your local environment applications you are developing.
In order to properly test many functionalities, you will need to send mining commands to local setup. You can achieve completely local and running environment with the following command:
Currently there are two supported cluster-types in this project. Specified by flags,
--duo (default), or --cat, --ohm, --uno with the following set-up:
| Type | Description |
|---|---|
| cat | Customized aesir-bitcoind-cat node that has OP_CAT enabled for experiments |
| duo | Contains two LND nodes named aesir-ping and aesir-pong unified by one single aesir-bitcoind service. |
| ohm | Only has aesir-bitcoind without any Lightning nodes. |
| uno | Only has one LND node named aesir-lnd connected to aesir-bitcoind. |
This project also helps you setup peripheral services to make development process easier, too. For example, if you want to deploy a duo-cluster with attached postgres database, run the following:
$ aesir deploy --with-postgres
> ...
$ aesir mine
> FIXMEOr run an uno-cluster with both attached postgres database and redis solid store cache like this:
$ aesir deploy --uno --with-postgres --with-redis
> ...
$ aesir mine
> FIXMEUse the following command to clean up active aesir-* containers:
aesir clean🚧 This will resets the current test state, so use with care. Example below:
$ aesir clean
> Remove active containers: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01- 0.3.1 Add
aesir-cashu-mint&aesir-lnd-krubimage setups and deployments w/ shared volumes - 0.3.2 Define classifiers on
pyproject.tomlfor PyPI metadata - 0.3.3 Drop
blackand use ruff formatter and linter - 0.3.4 Simplify deployment workflows and
- 0.3.5 Restructure project so that when installed,
srcfolder will not be created - 0.3.6 Breakdown "setup" command into "build" and "pull"
- 0.3.7 Lightning cluster now with ord
- 0.3.8 Rename "ord" to "ord-server" to avoid confusion with cli
- 0.3.9 Remove intermediate containers
- 0.4.0 Resist electricity with "ohm" mode
- 0.4.1 Remove Ordinals' spiked ball
- 0.4.2 Disable bitcoind prune mode
- 0.4.3 Implement dashboard walkthrough using blessed
- 0.4.4 Add
catcluster in deployment and--bitcoind-catflag for customized build - 0.4.5 The Yggdrasil update where docker build logs are chunked for display
- 0.4.6 Create default wallet if no lnd containers
- 0.4.7 (reverted) Remove unittesting from image build process
- 0.4.8 Follow Productivity Notes for
bitcoind-cat; Fix progress bar overlap. - 0.4.9 Change package manager and add
invoicecommand - 0.5.0 Adopt podman to encourage daemonlessness and rootlessness
- 0.5.1 Drop podman support for unstable SSH connections, viva Docker
- 0.5.2 Stricten type definitions and fix undefined/attribute bugs
- 0.5.3 Define
aesir-bitcoindandaesir-lndbuild instructions. Decouple from Polar's - 0.5.4 Add Lightning Terminal to list of available peripherals as
aesir-litd
- Add CI/CD with testcontainers
- Simplify
schemas.ymland embed commands to service definitions - Drop
docker-pyand replace withpodman-py(rolled back and on hold) - Write click tests.
- Use joblib to speed up deployment with parallelization.
- Create and add some type of
ordapiperipheral service.
- Mining dashboard hangs when using
aesir-bitcoind&aesir-ord-servertogether inohmcluster - Rust images like
aesir-electrsandaesir-ord-serverare prone to build failure
- pyenv - simple Python version management
- uv - extremely fast Python package & project manager written in Rust
The following guide walks through setting up your local working environment using pyenv
as Python version manager and uv as Python package manager. If you do not have pyenv
installed, run the following command.
Install using Homebrew (Darwin)
brew install pyenv --headInstall using standalone installer (Darwin and Linux)
curl https://pyenv.run | bashIf you do not have uv installed, run the following command.
Install using Homebrew (Darwin)
brew install uvInstall using standalone installer (Darwin and Linux)
curl -LsSf https://astral.sh/uv/install.sh | shOnce you have pyenv Python version manager installed, you can
install any version of Python above version 3.10 for this project.
The following commands help you set up and activate a Python virtual
environment where uv can download project dependencies from the PyPI
open-sourced registry defined under pyproject.toml file.
Set up environment and synchroniz project dependencies
pyenv shell 3.11.9
uv venv --python-preference system
source .venv/bin/activate
uv sync --devThis project is licensed under the terms of the MIT license.