AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
A free, native macOS app for running Valkey servers locally: any version, modules, live logs and a menu-bar icon.
Developer toolsSwift · HTMLGitHub @alhassanaraoufOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Valkey for Mac: a free, native macOS app to run Valkey servers locally — any version, modules (JSON, Bloom), live logs, menu bar. Like Postgres.app, for Valkey.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
macOS menu-bar app for Valkey — the open-source Redis replacement.
Mimics Postgres.app: run several Valkey servers side by side, each on its
own port, version and data directory, with its own live log. Valkey versions are installed from a signed
registry, so new Valkey releases don't need a new app release.
• macOS 13+
• Apple Silicon or Intel
Download Valkey.app.zip from Releases, drag to /Applications, launch.Read the full README ↗macOS menu-bar app for Valkey — the open-source Redis replacement.
Mimics Postgres.app: run several Valkey servers side by side, each on its own port, version and data directory, with its own live log. Valkey versions are installed from a signed registry, so new Valkey releases don't need a new app release.
| Path | What |
|---|---|
app/ | macOS app (Xcode project, SwiftUI sources, DMG script) |
registry/ | registry.json + signature, and tooling to build, package, sign and check Valkey versions |
website/ | valkey.app static site |
Artwork/ | logo and app icon sources |
.github/workflows/ | publish a Valkey version; deploy the website |
Download Valkey.dmg from valkey.app or Releases, open it and drag Valkey.app to /Applications. It isn't notarized yet, so allow it once on first launch (steps).
valkey-cli in Terminal), Show in Finder, Start / Stop, and the server's log..command scripts: Terminal, iTerm2, Ghostty, …). Ghostty 1.3+ is
driven through its AppleScript interface, which skips Ghostty's per-script "Allow" prompt; macOS asks
once for permission to control Ghostty.Files, all under ~/Library/Application Support/Valkey/:
Versions/<version>/bin/ — installed valkey-server / valkey-clivar-<port>/ (default per server) — valkey.conf (from app/Valkey/valkey.conf.default), data files, valkey.logThe app reads https://valkey.app/registry.json plus registry.json.sig, kept in registry/
and deployed with the website.
{
"schemaVersion" : 1,
"versions" : [
{
"version" : "9.1.2",
"url" : "https://github.com/alhassanaraouf/Valkey.app/releases/download/valkey-9.1.2/valkey-9.1.2-macos-universal.tar.gz",
"sha256" : "…",
"size" : 3471939,
"minimumMacOS" : "13.0",
"published" : "2026-09-25"
}
]
}
registry.json.sig is an Ed25519 signature over the exact bytes of registry.json. The app only
trusts the registry if it verifies against the public key in app/Valkey/VersionStore.swift, and only
installs a download whose size and SHA-256 match its entry. Versions needing a newer macOS are hidden..tar.gz with bin/valkey-server, bin/valkey-cli (universal, signed) and Valkey's COPYING.defaults write app.valkey.Valkey registryURL http://127.0.0.1:8000/registry.json.Official Valkey modules (JSON and Bloom so far) are listed under modules in the same signed registry
and turned on per server in Server Settings → Modules. The app starts the server with --loadmodule
for each, and refuses to start it if an enabled module isn't installed, since data saved with a module
won't load without it.
valkey) and the architectures it contains;
the app offers only matching builds. Some modules need different builds per line (Bloom has one for 8.0).~/Library/Application Support/Valkey/Modules/<id>/.registry/scripts/package-module.sh
builds a universal .dylib hermetically (hermetic.cmake keeps Homebrew packages out), then
registry/scripts/check-module.sh runs it against the newest registry Valkey of every claimed line —
startup must finish within 10s (an incompatible module can hang), module commands must work, and
module data must survive a restart — before anything is uploaded.Run the Publish Valkey version workflow (Actions → Run workflow) with e.g. 9.1.3. It:
registry/scripts/package-valkey.sh),valkey-<version>,registry/registry.json, signs it, verifies the signature and commits both files,It needs the repository secret VALKEY_REGISTRY_PRIVATE_KEY (contents of the private key file).
Locally, the same steps are:
registry/scripts/package-valkey.sh 9.1.3
swift registry/scripts/registry.swift add registry/registry.json 9.1.3 <release-asset-url> registry/dist/valkey-9.1.3-macos-universal.tar.gz
VALKEY_REGISTRY_PRIVATE_KEY=$(cat ~/.config/valkey-app/registry-signing-key) swift registry/scripts/registry.swift sign registry/registry.json
Signing key. Generated with swift registry/scripts/registry.swift keygen <file>, which writes the private key
to <file> (mode 600) and prints the public key for VersionStore.releaseKey. Keep the private key out of
the repo; anyone holding it can publish binaries the app will install. If it leaks, generate a new pair,
update releaseKey, re-sign the registry and ship an app update.
Valkey.app 1.2+ updates itself with Sparkle. It checks the feed
https://valkey.app/appcast.xml (website/appcast.xml) daily, or on demand via
Check for Updates… (app menu, menu-bar menu, Settings). Settings → Updates turns the daily check on or off.
SUPublicEDKey).
Sparkle replaces the app in place and relaunches it; servers that were running are stopped gracefully and
started again.defaults write app.valkey.Valkey updateFeedURL http://127.0.0.1:8000/appcast.xml.CFBundleShortVersionString and CFBundleVersion (always increasing) in app/Valkey/Info.plist.app/release-notes/<version>.md (Markdown, shown in the update window and on the release page).app-v<version> GitHub release (marked Latest), signs the zip into website/appcast.xml
(app/scripts/appcast.swift), commits it, and redeploys the site.website/ is the static site for valkey.app (plain HTML, no build step). The Deploy website
workflow publishes it to GitHub Pages together with the registry files whenever either changes.
One-time setup: repo Settings → Pages → Source GitHub Actions, custom domain valkey.app.
Preview locally: python3 -m http.server -d website (copy registry/registry.json in to see the version list).
Needs Xcode. Valkey isn't bundled, so app builds are quick.
open app/Valkey.xcodeproj # then Run (⌘R)
xcodebuild -project app/Valkey.xcodeproj -scheme Valkey -configuration Debug -derivedDataPath app/build/DerivedData build
app/scripts/create-dmg.sh # universal Release build → app/build/Valkey.app.zip + Valkey.dmg
registry/scripts/check-registry.sh # end-to-end check: signing, install, tampered registry, corrupted download
Apache License 2.0 — see LICENSE.