Skip to content
Documentation
v0.1.0
Tally docsOperate

Services & maintenance

Run lifecycle commands as the user who installed Tally. Stopping the application leaves its databases running; a normal uninstall stops the managed database services too.

Linux services#

Terminal
systemctl --user start tally-server
systemctl --user stop tally-server
systemctl --user restart tally-server
systemctl --user status tally-server
journalctl --user -u tally-server -f

Native database units are tally-postgres and tally-clickhouse. For startup before login and operation after logout, an administrator may enable lingering:

Terminal
sudo loginctl enable-linger "$USER"

The installer does not enable lingering automatically. A working systemd user manager is required when registering services.

macOS services#

Terminal
# Stop
launchctl bootout "gui/$(id -u)/ai.godel.tally.server"
# Start after stopping
launchctl bootstrap "gui/$(id -u)" \
  "$HOME/Library/LaunchAgents/ai.godel.tally.server.plist"
# Restart a loaded service
launchctl kickstart -k "gui/$(id -u)/ai.godel.tally.server"
# Status and logs
launchctl print "gui/$(id -u)/ai.godel.tally.server"
tail -f "$HOME/.local/share/godel-tally/server.log"

LaunchAgents start at login. Native database labels are ai.godel.tally.postgres and ai.godel.tally.clickhouse. Their logs are postgres.log and clickhouse.log in the configured data directory.

Updates and backups#

Back up PostgreSQL, ClickHouse, and the protected configuration directory before updating. Preserve TALLY_SECRET_KEY with your backup; a database restore alone cannot decrypt credentials without it. Keep backups outside the managed database directories.

Rerun the current installer to download the latest release. It preserves saved settings, credentials, and database data. Omit --port to retain the saved port, or supply it to change the application port.

Terminal
curl -fsSL \
  https://raw.githubusercontent.com/godellabs-ai/godel-tally/main/install.sh \
  -o install-tally.sh &&   bash install-tally.sh

Migrations run on startup. Do not delete migration ledgers to bypass checksum or version errors. A binary downgrade does not reverse database migrations. Use a tested, consistent restore when rollback requires reverting a schema.

Uninstall Tally#

Terminal
curl -fsSL \
  https://raw.githubusercontent.com/godellabs-ai/godel-tally/main/uninstall.sh \
  -o uninstall-tally.sh && \
  bash uninstall-tally.sh

Normal uninstall removes known application files and Tally's user services, and stops owned database containers. It keeps configuration, credentials, certificates, database data, packages, containers, and volumes so you can reinstall.

Preview without changes:

Terminal
bash uninstall-tally.sh --dry-run

A local copy is also installed at ~/.local/lib/godel-tally/uninstall.sh. For a custom configuration path, use TALLY_CONFIG_DIR=/absolute/config/path bash uninstall-tally.sh.

Also remove managed databases and data#

Terminal
# Preview database cleanup
bash uninstall-tally.sh --remove-databases --dry-run
# Uninstall Tally and remove its managed databases
bash uninstall-tally.sh --remove-databases

The option removes private native PostgreSQL/ClickHouse data, owned database containers, volumes recorded as created by this installation, and database packages recorded as newly installed by the installer. Linux package removal may request sudo. Shared dependencies are not automatically removed.

Configuration, credentials, TLS certificates, logs, and backups outside the private database directories remain. You can run this option after an ordinary uninstall. Docker or Apple container must be available to remove their resources.

Older installations without ownership records retain their packages and unrecorded volumes. The script reports these retained resources instead of guessing whether they belong to Tally. A database configured as existing is never removed.

Troubleshooting#

  • Installation stopped: inspect the reported stage and logs, fix the cause, and rerun the installer. Saved secrets make retries safe.
  • Port in use: choose a free port with --port; use the printed URL afterward.
  • Cannot sign in: use the configured HTTPS origin consistently. Check readiness and server logs. Successful registration creates an account even if the subsequent session check fails; sign in with that account instead of registering again.
  • Missing or stale source data: check the connector's latest run, permissions, scope, and source retention. A successful connection does not prove all activity is available.
  • Package removal refused: another installed package may depend on it. Resolve that dependency deliberately; the uninstaller does not force removal.