Install
Supported platforms
Section titled “Supported platforms”| Platform | Status |
|---|---|
| macOS (Apple silicon, Intel) | Supported, tested |
| Linux (x86_64, aarch64) | Supported, not yet tested |
| Windows | Not supported (token locking uses POSIX flock) |
Install from source
Section titled “Install from source”ownpurse is built from source with one script. Clone the repository and run the installer:
git clone https://github.com/brancusi/ownpurse.gitcd ownpurse./install.shThe installer checks for a Rust toolchain, builds both binaries in release mode, and installs them into
~/.local/bin:
| Binary | What it is |
|---|---|
ownpurse |
The CLI: every command over the local record. ownpurse tui starts the terminal UI |
ownpurse-tui |
The terminal UI (read-only) |
At the end it checks the installed version with ownpurse --version and warns if ~/.local/bin is missing from
your PATH. You can safely run it again.
Options
Section titled “Options”| Option | Effect |
|---|---|
--prefix DIR |
Install into DIR/bin instead of ~/.local/bin |
--uninstall |
Remove both binaries |
--help |
Usage |
Toolchain
Section titled “Toolchain”The Rust version is pinned. If mise is installed, the script installs the pinned Rust
from rust/mise.toml. With rustup, rust/rust-toolchain.toml selects the same version
automatically. If neither is installed, the script says so and stops.
The caretline dependency
Section titled “The caretline dependency”The terminal UI’s overlay and walkthrough crates come from caretline,
which is not published to crates.io yet. caretline.rev pins the exact commit. On the first install, install.sh
clones caretline into a temporary folder and exports that commit into the ignored vendor/caretline/ folder, with a
checksum of every file. Later installs only verify the export, and a modified or mismatched export is refused
instead of overwritten.
To prepare it yourself, from any caretline clone that contains the pinned commit:
bash rust/scripts/prepare-caretline.sh /path/to/caretlinebash rust/scripts/prepare-caretline.sh --checkCheck the setup
Section titled “Check the setup”From the folder that holds your ownpurse.json:
cd path/to/your-projectownpurse doctordoctor is read-only. It checks that:
- both binaries are on
PATH; - the config is found and lists organisations;
- the local record opens (read-only);
- the token file exists and only its owner can read it (mode 600).
Every problem comes with a fix. doctor never opens the token file and never prints your home folder; paths show
as ~/…. It exits 0 when nothing fails (warnings are fine) and 1 when a check fails.
Upgrade
Section titled “Upgrade”git pull # or check out a release tag: git checkout <tag>./install.shA running terminal UI notices the newer build and offers to upgrade in place, with your view kept. See In-place upgrade.
Uninstall
Section titled “Uninstall”./install.sh --uninstallThis removes the two binaries only. Your config (ownpurse.json), the local record (for example
db/xero.sqlite) and the token file stay where they are. Delete them yourself if you want them gone.
Quickstart: run the demo, then connect your books.