Desktop apps that connect to the ReAI API.
Download apps — Mac: Apple Silicon, macOS 15+. Windows: Windows 11 25H2+, x64 or ARM64.
| App | What it does |
|---|---|
| Time Tracker for Windows | Native Windows timer, with or without a project. Unsigned ZIP download. |
| Time Tracker for Mac | Start and stop your timesheet timer from the menu bar. |
| Import for Mac | Import products, customers and suppliers from Excel or CSV. |
| Import for Windows | Native Windows 11 import app. Unsigned ZIP download. |
| Finder Vault | Upload documents and watch folders for new files. |
| Stripe Import for Mac | Manually import simple paid Stripe invoices and stage subscriptions. |
| Vipps Reconcile for Mac | Review Vipps payouts against ReAI bank transactions. |
| Klarna Reconcile for Mac | Review Klarna payouts against ReAI bank transactions. |
| Zettle Reconcile for Mac | Review Zettle payouts against ReAI bank transactions. |
| Dintero Fees for Mac | Review withheld payout fees and create a monthly ReAI voucher for review. |
Download from the app page.
- Mac: open the disk image and drag the app to Applications. Mac releases are signed with Developer ID and notarized by Apple. To update, quit and replace the app in Applications.
- Windows: choose your processor (x64 or ARM64), Extract All from the ZIP, and open the app’s EXE. Keep the whole folder together. No .NET installation or administrator access is needed. To update, close the app and extract the new version into a new folder.
Windows downloads are unsigned. Windows may warn or block them. If SmartScreen offers More info → Run anyway, you can choose it after confirming the download came from this repository and you trust it. Smart App Control, S mode and workplace policy may prevent running the app. Keep Windows security protections enabled. See the app README for details and checksum verification.
Most apps use Connect to ReAI with browser approval. The Vipps, Klarna, Zettle and Dintero apps instead accept a ReAI user access token pasted into the app. Visit the selected app README for provider credentials. Your password stays in the browser. Access keys stay in macOS Keychain or Windows Credential Locker, restricted to the approved company and your existing permissions. Revoke access in your ReAI profile.
apple/
time-tracker/ Swift package and app source
finder-vault/ Swift package and app source
import/ Swift package and app source
stripe/ Stripe migration app
vipps/ Vipps payout reconciliation app
klarna/ Klarna payout reconciliation app
zettle/ Zettle payout reconciliation app
dintero/ Dintero payout fee app
windows/
import/ .NET 11 / WinUI 3 app and app-local import logic
time-tracker/ .NET 11 / WinUI 3 app and app-local timer logic
global.json Pinned .NET 11 RC1 SDK
apps.json App identities and download names
site/ GitHub Pages download site
tools/apple/ Apple build, signing and release tools
tools/windows/ Windows build and packaging tools
.github/ CI, release and Pages workflows
Each app is independently versioned. Platform folders contain app source; shared release tooling stays in tools/.
Apple apps use SwiftUI. Windows apps use WinUI 3 and support Windows 11 25H2+, x64 and ARM64. Each platform uses native controls.
Follow Adding a new app for the starting points, identity checklist, apps.json examples and build/release steps.
Add the app inside this monorepo and reuse the existing release tooling. No ReAI backend registration or new signing credentials are needed for ordinary apps.
Install Swift 6.4 and the macOS SDK, then run from the repository root:
python3 tools/apple/build.py time-tracker
python3 tools/apple/build.py finder-vault
python3 tools/apple/build.py import
python3 tools/apple/build.py stripe
python3 tools/apple/build.py vipps
python3 tools/apple/build.py klarna
python3 tools/apple/build.py zettle
python3 tools/apple/build.py dinteroSet SWIFT_BIN to the Swift 6.4 executable if needed. Local builds appear in dist/<app>/ and are ad-hoc signed for development.
Pull requests build affected apps without signing credentials. Apple releases use the shared Apple release workflow.
To release a Mac app, merge your changes, then open Actions → Release app → Run workflow, keep main, and choose the app. Or run:
gh workflow run apps.yml --repo beint-no/reai-apps --ref main -f app=time-trackerGitHub chooses the next patch version, builds, signs, notarizes, verifies, publishes the download, and updates the site.
Pushing code runs build checks; publishing requires the release action. Repository write access is required.
Apple credentials are already stored in GitHub. Teammates need no signing secrets or .zshrc changes.
A failed verification publishes nothing.
Windows Import and Time Tracker use .NET 11 RC1 (SDK 11.0.100-rc.1.26425.128), C# 15 and Windows App SDK 2.5.1. Write code on your Mac; GitHub Windows runners build the native UI and self-contained x64/ARM64 packages. The app-local logic also builds on macOS. Toolchains and dependencies are pinned; the app READMEs record the versions checked on 20 September 2026. Verify current releases when adding or updating dependencies.
See Windows Import and Windows Time Tracker for instructions. To publish a free unsigned release, merge changes, then open Actions → Windows apps → Run workflow, keep main, and choose the app. GitHub builds both architectures, verifies the archives, publishes ZIPs and checksums, and updates the download site. PRs and pushes only run checks. No Azure account, signing subscription or developer-held secret is needed. See Windows release tooling.
No registration or ReAI backend change is required:
- POST form data to
/oauth/device/authorizewith a self-chosenclient_idand optionalclient_name. - Display
user_codeand openverification_uri_complete. The user compares the code, chooses a company, and approves. - Poll
/oauth/device/tokenwithclient_id,device_code, andgrant_type=urn:ietf:params:oauth:grant-type:device_code. Respect the returned polling interval, backoff, and expiry. - Store
access_tokensecurely. Call/api/mefor the approved company and send its ID inX-Tenant-Idon company requests.
Read the public API contract before constructing requests. App names are self-declared, not publisher verification. See Time Tracker’s connection code.