Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

abssctl — Actual Sync Server Admin CLI

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.

Metadata

Release files for abssctl 0.1.3a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abssctl 0.1.3a1
File Size Uploaded Provenance
abssctl-0.1.3a1.tar.gz 37.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for abssctl 0.1.3a1
File Interpreter ABI Platform
abssctl-0.1.3a1-py3-none-any.whl Python 3 none any Details

Total release size: 68.9 kB

Release files / abssctl-0.1.3a1.tar.gz

Download URL abssctl-0.1.3a1.tar.gz
Size 37.0 kB
Tags Source
SHA-256 checksum
How to use checksums
da262c511b74af7c4c6526c49ce68db3377899fa781738008b1c1333c8a8e739
BLAKE2b-256 checksum
How to use checksums
08327e2bf5636eb561c5f7e3db5f40958d89b86073e51c9c0389648941c66d05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2025.

Transparency log

Release files / abssctl-0.1.3a1-py3-none-any.whl

Download URL abssctl-0.1.3a1-py3-none-any.whl
Size 31.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
671b4231716432ba89e6ff3afda1250e8c3e7d7596267f81356cf20baa4c7da2
BLAKE2b-256 checksum
How to use checksums
6c167ff0741f807e0698008f299a248f1e7b77971300f15432473bb4c258df60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2025.

Transparency log

Security for abssctl 0.1.3a1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for abssctl-0.1.3a1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page