Skip to content

Distribution

Airbeeps is distributed as a Python wheel that bundles the backend and pre-built frontend.

Quick install

bash
pip install airbeeps
airbeeps run

Building from source

Prerequisites

  • Python 3.13+
  • Node.js 20+
  • uv and pnpm

Build the wheel

bash
git clone https://github.com/airbeeps/airbeeps.git
cd airbeeps
python scripts/build_wheel.py

This script:

  1. Installs frontend dependencies (pnpm install)
  2. Builds the Nuxt frontend (pnpm generate)
  3. Copies the build output into the backend package
  4. Builds the Python wheel with hatchling

The resulting .whl file is placed in backend/dist/.

Package structure

airbeeps-<version>.whl
├── airbeeps/
│   ├── main.py              # FastAPI app
│   ├── config.py             # Settings
│   ├── cli.py                # CLI commands
│   ├── rag/                  # RAG pipeline
│   ├── agents/               # Agent system
│   ├── frontend_dist/        # Bundled Nuxt build
│   └── ...
└── airbeeps-<version>.dist-info/

Installation modes

Installed mode (from PyPI or wheel)

bash
pip install airbeeps
airbeeps run
  • Data stored in platform directory (via platformdirs)
    • Linux: ~/.local/share/airbeeps/
    • macOS: ~/Library/Application Support/airbeeps/
    • Windows: ~\AppData\Local\airbeeps\
  • Frontend served from bundled frontend_dist/
  • Database at {data_dir}/airbeeps.db by default

Development mode (from source)

bash
cd backend
uv sync --locked
uv run scripts/bootstrap.py init
uv run fastapi dev --port 8500 airbeeps/main.py
  • Data stored in backend/data/
  • Frontend runs separately via pnpm dev on port 3000

CLI commands

CommandDescription
airbeeps runStart the server
airbeeps migrateRun database migrations
airbeeps migrate --showShow current migration revision
airbeeps create-userCreate a user (interactive)
airbeeps create-user --email user@example.com --superuserCreate an admin
airbeeps versionShow version info
airbeeps infoShow configuration details

airbeeps run flags

FlagDefaultDescription
--host / -h127.0.0.1Host to bind
--port / -p8500Port to bind
--reloadfalseAuto-reload on changes (dev)
--no-migrationsfalseSkip auto-migrations
--log-levelinfoLog level

Version management

Airbeeps uses hatch-vcs for dynamic versioning based on Git tags.

Releases

bash
git tag v0.2.0
git push origin v0.2.0

The version is derived from the latest Git tag automatically.

Development builds

Without a tag, the version includes a development suffix:

0.1.5.dev3+g8c3ede9

Publishing to PyPI

bash
python scripts/build_wheel.py
twine upload backend/dist/*

The GitHub Actions release workflow automates this: tag a release and the CI builds and publishes to PyPI.

Optional dependencies

Install extras for production features:

bash
# Redis caching
pip install airbeeps[redis]

# Celery task queue
pip install airbeeps[celery]

# All production extras
pip install airbeeps[production]

Testing the build

bash
# Install in a clean venv
python -m venv /tmp/test-airbeeps
source /tmp/test-airbeeps/bin/activate  # or .\Scripts\Activate.ps1 on Windows
pip install backend/dist/airbeeps-*.whl

# Verify
airbeeps version
airbeeps info
airbeeps run --port 9000

Troubleshooting

IssueSolution
ModuleNotFoundError: airbeepsEnsure pip install completed without errors
Version shows 0.0.0Ensure Git tags are pushed: git push origin --tags
Frontend not loadingCheck that frontend_dist/ exists inside the wheel
Database migration errorsRun airbeeps migrate manually
Port already in useUse --port to change: airbeeps run --port 9000

MIT License