Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Radish Core

CI

Radish Core is the open-source Swift privacy and household-sync layer behind Radish, the iPhone app that turns grocery receipts into editable household spending insights. See App Store availability, or email hello@radish.money for product support.

It contains the security-sensitive code that seals saved record bytes, authenticates household sync bundles, preserves corrections and deletions, and validates the QR pairing payload shared between devices. Publishing this narrow layer makes those behaviors and their tests inspectable without publishing the complete app.

What's Inside

  • RadishPrivacyKit exposes the transport-agnostic SecureSyncStore contract and an InMemorySecureSyncStore implementation for sealed records, authenticated bundles, and the local event ledger.
  • RadishPairing encodes and validates the versioned QR payload used to share household key material with another device.

For bytes explicitly passed through these APIs, the implementation and tests cover four important properties:

  • record bytes and ledger event bodies are sealed with AES-256-GCM;
  • current sync bundles are bounded, authenticated, and fully checked before state is changed;
  • deletion tombstones prevent stale devices from restoring removed records; and
  • decoded pairing payloads reject expired codes and non-32-byte secrets.

The exact assumptions and limits are documented in THREAT_MODEL.md.

Build And Test

Requirements: Swift 6.1 or newer and Gitleaks 8.30.1 or newer for complete repository verification, with macOS 14 or iOS 18 as the minimum Apple platform when integrating the libraries. Set GITLEAKS_BIN when the executable is not available on PATH.

On macOS, select Xcode's developer directory before running Swift commands. The Makefile defaults to /Applications/Xcode.app/Contents/Developer; set DEVELOPER_DIR if Xcode is installed elsewhere.

swift test
swift test -c release

On macOS, run the complete repository verification. It scans the current tree and complete reachable Git history for secrets before running package tests:

make verify

CI runs debug and release tests on macOS and Linux. The package uses Foundation and Apple's swift-crypto library.

Swift Package Manager

Use the repository URL and a tagged semantic version, then select the product your target needs:

.package(
    url: "https://github.com/IvGolovach/radish-core.git",
    from: "0.2.0"
)

The compiled PublicAPIUsageTests show a complete sealed-record and sync round trip. Public APIs are documented in source.

Scope

This repository is the core package, not the complete Radish application. It does not contain receipt capture, OCR or provider processing, application UI, cloud transport configuration, subscriptions, analytics, or App Store build attestation. The package contains no network client and cannot prove how an integrating app handles data outside these APIs.

Read PRIVACY.md for the precise data boundary and THREAT_MODEL.md for security assumptions. Report suspected vulnerabilities privately according to SECURITY.md.

Contributing

Radish Core is published from Radish's private integration repository so every package change can also be exercised against the app. Public pull requests are welcome as proposals; CONTRIBUTING.md explains the mirror workflow. AI coding agents should also read AGENTS.md.

The package follows semantic versioning. See CHANGELOG.md for security and compatibility changes.

License

Radish Core is licensed under the Apache License 2.0. See LICENSE and NOTICE.

About

Open-source Swift privacy and sync core behind Radish (radish.money): sealed records, authenticated household sync, and QR pairing payloads.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages