TZGyn cbdf5538aa Add a Dockerfile so the sync server is one command to deploy
Self-hosting meant building the binary by hand and wiring Postgres up
yourself. The image is a static binary on distroless with a built-in
healthcheck flag, and docker-compose brings up Postgres alongside it.

The image itself is unbuilt here: no container runtime is available in
this environment, so only the static Linux build and the healthcheck
flag have been exercised.

💘 Generated with Crush

Assisted-by: Crush:kimi-k3
2026-10-08 10:23:54 +08:00

Prompt

A native macOS app for keeping prompts and photos, in the spirit of Copper by shadcn: a floating panel that sits next to your work. Click anything to copy it back to your clipboard.

  • Click to copy — text notes go back as text, photos go back as images.
  • Capture from anywhere — select text in any app and tap Left Shift twice.
  • Photos — paste (Cmd+V), drag & drop, or add via the photo button.
  • Sections — type # Name in the composer; Cmd+K switches sections.
  • Copy as List — Cmd+click to multi-select, right-click → Copy as List (or Shift+Cmd+C) for a numbered list ready to paste into a chat.
  • Merge Notes, Mark as Done, Edit, Move To — right-click any item.
  • Search — Cmd+F searches across all sections.
  • Sync (optional) — generate an 8-digit code (1234-5678) on one Mac and enter it on the other; no account, no login. The code is the only secret.
  • Local & private — everything lives in ~/Library/Application Support/Prompt/ (store.json + Images/). No account, no sync, no telemetry.

Shortcuts

Action Shortcut
Capture current selection Left Shift ×2 (or Cmd+Shift+C)
Show/hide panel Right Shift ×2 (or Cmd+Shift+Space)
Switch/create section Cmd+K
Search Cmd+F
Focus composer Cmd+N
Sync settings Cmd+,
Copy selection as numbered list Shift+Cmd+C
Close panel Esc

Double-Shift gestures require Accessibility access (Prompt reads the selection by simulating Cmd+C, then restores your clipboard untouched). The Cmd+Shift fallbacks work without it. Bare keys like Space and Cmd+C are deliberately not bound inside the panel so they never conflict with typing in the composer.

Install

brew tap TZGyn/tap https://gitea.tzgyn.dev/TZGyn/homebrew-tap.git
brew trust TZGyn/tap
brew install --cask prompt

Sync server

Sync is optional and needs the small Go backend in Server/. There is no authentication: a sync group is identified by an 8-digit code, and whoever has the code can read and write the group.

createdb prompt_sync
cd Server
PROMPT_SYNC_DATABASE_URL="postgres://localhost:5432/prompt_sync?sslmode=disable" \
  go run .          # listens on :8080

Or run it with Docker (POSTGRES_PASSWORD=… docker compose up -d) — see Server/README.md for that and for deploying to a VPS.

Then in the panel: click the sync icon, set the server URL (e.g. http://192.168.1.10:8080 or an HTTPS host), and either Generate Code on the first Mac or paste the code into Join on the other.

Notes:

  • Both Macs must be able to reach the server. A LAN address or a Tailscale hostname works; localhost only works if the server runs on the same Mac. See Server/README.md to deploy it on a VPS or home server.
  • Joining a group that already has notes replaces what's on that Mac.
  • The app polls every 5 seconds (a tiny version check) and pushes 1.5s after a change; last write wins, and changes that came from the server are not echoed back.
  • Verify sync from a terminal with Prompt --sync-check.

Build from source

swift build                          # debug build
swift run Prompt                     # dev run (menu bar icon appears)
./build-app.sh 0.1.0                 # release build + Prompt.app + icon + codesign
./release.sh 0.1.0                   # build + dist/Prompt.zip (+ notarization when configured)

Requires macOS 14+.

S
Description
A Copper-style macOS panel that keeps prompts and photos one click from the clipboard
Readme
5.7 MiB
Prompt 0.1.19
Latest
2026-10-28 14:13:14 +00:00
Languages
Swift 86.2%
Go 8.1%
Shell 5%
Dockerfile 0.7%