Skip to main content

Actual Budget Multi-Instance Sync Server Admin CLI

Project description

Project maturity badge showing Alpha status

abssctl is a planned, batteries-included command line tool that installs and manages multiple Actual Budget Sync Server instances on the TurnKey Linux Node.js appliance. The CLI will own the full lifecycle: provisioning new instances, performing upgrades or rollbacks, managing nginx and systemd integrations, and producing support bundles for operators.

Project Facts

  • Project name: Actual Budget Multi-Instance Sync Server Admin CLI.

  • CLI executable: abssctl (Actual Budget Sync Server ConTroL).

The project is currently in the Alpha (foundations) phase. The repository builds on the bootstrap work from Pre-Alpha and now focuses on wiring core services: configuration, state management, and read-only workflows that unlock future instance operations.

Key Objectives

  • Provide a predictable Python package that can be installed with pip or pipx and exposes an abssctl executable.

  • Establish documentation sources in reStructuredText with Sphinx as the build system (see docs/source).

  • Enforce quality gates via linting, type checking, and tests in continuous integration.

  • Capture all architectural decisions in docs/adrs and maintain living requirements under docs/requirements.

Quick Start (Alpha Foundations)

  1. Create a Python 3.11 virtual environment stored in .venv with a prompt label dev and activate it:

    python3.11 -m venv .venv --prompt dev
    source .venv/bin/activate
  2. Install the package in editable mode together with developer dependencies:

    pip install -e .[dev]

    This registers abssctl with your virtualenv so commands and tests import without needing to tweak PYTHONPATH.

  3. Run the basic quality checks:

    ruff check src tests
    mypy src
    pytest
  4. Invoke the CLI skeleton:

    abssctl --help
    abssctl --version
    abssctl config show
    abssctl version list --json
    abssctl instance list --json

Repository Layout

  • src/abssctl — Python package containing the Typer-based CLI scaffold.

  • tests — Pytest suite covering CLI entry points and future modules.

  • docs — Requirements, ADRs, Sphinx sources, and generated support matrix.

  • tools — Utility scripts used during development (e.g., support matrix generator).

Configuration Basics

The configuration loader follows ADR-023 precedence: built-in defaults, /etc/abssctl/config.yml, environment variables prefixed with ABSSCTL_, and finally CLI overrides such as --config-file. Use abssctl config show (or --json) to inspect the merged values and confirm environment overrides are applied as expected.

Read-only registry commands are now wired up: abssctl version list and abssctl instance list surface the contents of versions.yml and instances.yml respectively, while abssctl instance show <name> displays details for a single instance. Use --remote with version list to pull published versions from npm when the CLI is available (falls back gracefully if npm is missing).

Roadmap & Specifications

  • Requirements & project plan: docs/requirements/abssctl-app-specs.txt

  • Architecture Decision Records: docs/adrs

  • Support matrix source: docs/support/actual-support-matrix.yml

Community & Licensing

The project is released under the MIT License (LICENSE). Contributions are welcome—please review the developer guide skeleton under docs/source for the expected workflow and coding standards as they evolve.

Branch Strategy

  • main — production-ready releases tagged for PyPI.

  • dev — integration branch for upcoming development builds.

  • dev-alpha — working branch for the foundations milestone and experimental CLI work.

  • Short-lived feature branches support focused working sessions.

Roadmap Snapshot

  • Pre-Alpha — Repo Bootstrap (complete): scaffold layout, pyproject.toml, docs skeleton, CI with lint/test.

  • Alpha Builds — Foundations: CLI skeleton beyond placeholders, config loader, logging, state/lock primitives, template engine, read-only commands, JSON output plumbing. Publish dev builds to PyPI from tags on dev.

  • Beta Releases — Core Features: Version operations, instance lifecycle, systemd/nginx providers, doctor basics. All updates become non-destructive or ship with migration hooks.

  • Release Candidate — Quality & Docs: Support bundle, robust errors, man pages & completion, full docs & examples, CI integration tests on TurnKey Linux VMs. Automate PyPI release from GitHub actions.

  • Release — v1.0.0: Burn-in testing across supported Actual versions, release on a green pipeline with documentation sign-off.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abssctl-0.1.0a1.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abssctl-0.1.0a1-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file abssctl-0.1.0a1.tar.gz.

File metadata

  • Download URL: abssctl-0.1.0a1.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for abssctl-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 f090634141c15788208fe18169dea53455cce7632b89a882f4b4cdeb81fd4b74
MD5 afe7662d4a976d8d3be702bf39c8d372
BLAKE2b-256 309b57db8981dd73eb4b3e53d59e4ff1b519c609013bd1c777b9c10e4cdb72c8

See more details on using hashes here.

File details

Details for the file abssctl-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: abssctl-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for abssctl-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 0cce91eba51cb4df4c8d169e0375995ad16e6231db30b2b1a62f4b01fb83837e
MD5 c882712185558d5b683182ca5d0a7c04
BLAKE2b-256 b0e73abac05bea2b0aafffc00e683d209bd37748c8d4411a5932992fe01b96fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page