Actual Budget Multi-Instance Sync Server Admin CLI
Project description
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)
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
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.
Run the basic quality checks:
ruff check src tests mypy src pytest
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f090634141c15788208fe18169dea53455cce7632b89a882f4b4cdeb81fd4b74
|
|
| MD5 |
afe7662d4a976d8d3be702bf39c8d372
|
|
| BLAKE2b-256 |
309b57db8981dd73eb4b3e53d59e4ff1b519c609013bd1c777b9c10e4cdb72c8
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cce91eba51cb4df4c8d169e0375995ad16e6231db30b2b1a62f4b01fb83837e
|
|
| MD5 |
c882712185558d5b683182ca5d0a7c04
|
|
| BLAKE2b-256 |
b0e73abac05bea2b0aafffc00e683d209bd37748c8d4411a5932992fe01b96fb
|