The CORE Mac app is a thin Tauri shell around the webapp — the main window and the voice widget both load whatever webapp URL you tell them to. By default that’sDocumentation Index
Fetch the complete documentation index at: https://docs.getcore.me/llms.txt
Use this file to discover all available pages before exploring further.
https://app.getcore.me (CORE Cloud). If you self-host, set one config key and the app loads your instance instead.
Requirements
- A self-hosted CORE webapp reachable from your Mac (see the setup guide).
- macOS 12 or later.
- The Mac app installed (release build — runtime URL override is intentionally ignored in
tauri devso local development always points atdevUrl).
1. Install the app
Grab the latest.dmg from GitHub Releases. The app auto-updates against the same release feed.
Open the .dmg, drag CORE to /Applications, and launch it once so it creates ~/.corebrain/. You’ll see the bundled cloud login screen — that’s expected; we’ll redirect it in the next step.
2. Point it at your instance
Edit~/.corebrain/config.json and add preferences.frontendUrl:
| Where you host | frontendUrl |
|---|---|
| Local Docker on Mac | http://localhost:3033 |
| Internal domain | https://core.acme.internal |
| Railway deployment | https://core-production.up.railway.app |
preferences block rather than overwriting it.
Quit CORE (⌘Q) and relaunch. Both the main window and the voice widget will now load from your instance and share session cookies.
3. Verify
-
Main window shows your self-hosted login screen, not
app.getcore.me. -
Tail the app log to confirm the override was picked up:
You should see lines like
[startup] webview url (/) = https://core.acme.internal/ (from config).
Connect a gateway (optional)
If you want the Mac app to drive coding agents, the browser, or local folders, install the gateway and log it into your instance:How the override works
A few things worth knowing if you’re debugging:- Release builds only. In
tauri dev(debug_assertionstrue) the app always uses the bundleddevUrland ignoresfrontendUrl. This is so contributors can develop againstlocalhost:3033without their config sending the dev shell off to production. - Main + voice share the URL. Both windows resolve their webview URL from the same base, which is what lets them share cookies and session state.
- Tauri IPC is granted dynamically. The bundled remote capability only whitelists
app.getcore.me. On launch, iffrontendUrlis set, the app installs an equivalentuser-frontend-remotecapability for your URL sowindow.__TAURI__calls (notifications, shell open, etc.) work from your origin. - Updates still flow from the official feed. The Tauri updater endpoint is baked into the release build and points at the public GitHub release feed regardless of
frontendUrl. You always get the same Mac app binary; only the webapp it loads changes.
Troubleshooting
App still loadsapp.getcore.me. Check that:
- The path is
~/.corebrain/config.json(tilde, not literal~) and the JSON parses (cat ~/.corebrain/config.json | jq .). frontendUrlis underpreferences, not at the top level.- You fully quit CORE before relaunching — closing the window isn’t enough.
https:// resource:
- Self-signed certs aren’t trusted. Use a real cert (Let’s Encrypt is easiest) or trust the cert in your system keychain.
- Make sure the host is reachable from your Mac, not just from inside your VPC.
window.__TAURI__ calls are silently dropped. The dynamic capability didn’t install. Check the app log for dynamic remote capability added for <url>. If you see add_capability(...) failed, the URL probably has a trailing slash or path — strip it back to just the origin.
Voice widget points at the wrong instance. It reads the same frontendUrl as the main window. If only one of them is wrong, you almost certainly have two CORE processes running — killall CORE and relaunch.