Skip to main content

Time Machine-style personal backup orchestrated by Python & uv

Project description

Timeless-Py ⏳

Snapshot what matters, remember how to rebuild the rest.

Time Machine-style personal backup orchestrated by Python & uv.

Overview

Timeless-Py is a modern backup solution designed for macOS, providing:

  • Hourly, daily, weekly deduplicated snapshots of user data
  • Re-install manifest generation for applications and system packages
  • Engine-agnostic approach with Restic, Borg, and Kopia support
  • Client-side encryption (AES-256) with keys stored in Keychain
  • Simple 10-minute setup: brew install timeless-pytimeless init --wizard

Features

  • Snapshot Management: Create, browse, and restore backups with ease
  • Retention Policies: Define flexible retention policies (hourly/daily/weekly/monthly/yearly)
  • Manifest Generation: Auto-generate reinstall manifests for your Mac software
  • Built-in Security: Fully encrypted snapshots with secure key management
  • FUSE Integration: Mount snapshots as regular volumes for easy browsing
  • Exclude Patterns: Specify patterns for files and directories to exclude from backups

M1 Milestone Features

  • Restic Engine Integration: Full integration with Restic for backup, restore, snapshot management, and repository operations
  • Retention Policy DSL: Define custom retention policies in YAML to automatically manage snapshot retention
  • Exclude Patterns Support: Exclude specific files or directories from backups using glob patterns
  • Comprehensive CLI Interface: User-friendly command-line interface for all operations

Installation

# Coming soon - once published
brew install timeless-py

# Initialize with wizard
timeless init --wizard

Usage

# Create a backup
timeless backup

# Mount latest snapshot
timeless mount

# Restore a file or directory
timeless restore <snapshot> <path>

# List available snapshots
timeless snapshots

# Verify repository integrity
timeless check

# Reinstall software from manifests
timeless brew-replay

Development

This project requires Python 3.11 or higher.

# Setup development environment
git clone https://github.com/rappdw/timeless.git
cd timeless
uv pip install -e ".[dev]"

# Run tests
pytest

# Run linting and type checks
ruff check .
black --check .
isort --check .
mypy --strict .

License

This project is licensed under Apache-2.0. See LICENSE file for more details.

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

timevault-0.1.0.tar.gz (35.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timevault-0.1.0-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file timevault-0.1.0.tar.gz.

File metadata

  • Download URL: timevault-0.1.0.tar.gz
  • Upload date:
  • Size: 35.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timevault-0.1.0.tar.gz
Algorithm Hash digest
SHA256 46b090acf25210ac5e1ad9609c865ce7d6e1ddcc39292d0693ae078cbc41e924
MD5 ab65e55d291b1f139346a06a12883f72
BLAKE2b-256 781b6af611ffcfd154b7fdda74bb1d48ab049112269f1bca82b724546edbfc74

See more details on using hashes here.

Provenance

The following attestation bundles were made for timevault-0.1.0.tar.gz:

Publisher: publish.yml on rappdw/timeless

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

File details

Details for the file timevault-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: timevault-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timevault-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a4f4878a0c6d4be459f9dfcfbe6a189a34099a7a8c539031e66058c271cdd71b
MD5 cfb45cb060d1ae35be3bb5d62fab84ed
BLAKE2b-256 107dade1519485bf5f006b1e2524b9062593edfc80fb42bb515cddbd5666aed4

See more details on using hashes here.

Provenance

The following attestation bundles were made for timevault-0.1.0-py3-none-any.whl:

Publisher: publish.yml on rappdw/timeless

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