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). All commands accept --config-file so you can point at alternate configuration sources when testing or operating multiple environments.

Roadmap & Specifications

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

  • Milestone roadmap tracker: docs/roadmap.rst

  • 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.3a1.tar.gz (37.0 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.3a1-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: abssctl-0.1.3a1.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for abssctl-0.1.3a1.tar.gz
Algorithm Hash digest
SHA256 da262c511b74af7c4c6526c49ce68db3377899fa781738008b1c1333c8a8e739
MD5 083f4e5fc37f3e2c9be7cb6fdbb16350
BLAKE2b-256 08327e2bf5636eb561c5f7e3db5f40958d89b86073e51c9c0389648941c66d05

See more details on using hashes here.

Provenance

The following attestation bundles were made for abssctl-0.1.3a1.tar.gz:

Publisher: publish-release.yml on DocCyblade/abssctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: abssctl-0.1.3a1-py3-none-any.whl
  • Upload date:
  • Size: 31.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for abssctl-0.1.3a1-py3-none-any.whl
Algorithm Hash digest
SHA256 671b4231716432ba89e6ff3afda1250e8c3e7d7596267f81356cf20baa4c7da2
MD5 0f1c71fad12e85ac9327192d75b17276
BLAKE2b-256 6c167ff0741f807e0698008f299a248f1e7b77971300f15432473bb4c258df60

See more details on using hashes here.

Provenance

The following attestation bundles were made for abssctl-0.1.3a1-py3-none-any.whl:

Publisher: publish-release.yml on DocCyblade/abssctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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