Local Setup & Workflow Guide
Senrelay combines a local macOS background service with a native/browser workbench for multi-host configuration management, source-linked companion auto-memory (with a brief 💡 receipt), and cross-agent conversation relay.
1. Multi-Host Configuration Management: Switch target hosts from the permanent top bar (covering the six core context hosts—Claude Code, Codex, Cursor, Antigravity, OMP, and OpenCode—plus extended config hosts), run One-Click Connect, and switch or sync providers, MCP tools, Skills, and prompts with automatic rollback snapshots and external conflict diff protection. File writes and live host process reloads are tracked separately.
2. Companion Auto-Memory: During everyday chats, companion MCP tools and Skills capture source-linked structured memories (preferences, architecture decisions, constraints, progress, and lessons learned) with a brief 💡 receipt, complemented by 📌 core-rule pinning, AGENTS.md handbook generation, and multi-format document imports.
3. Cross-Agent Conversation Relay: Type /contextcore or say "Relay" in a new agent to list recent cross-host conversation candidates (with index, source agent, project, title, and summary)—replying with only a number loads context and reports a brief summary while waiting for your next instruction, while attaching a concrete task continues directly.
1. Download & Requirements macOS 14.0+ · arm64
Install via Homebrew Cask or download published artifacts from GitHub Releases (v1.0.0-beta.1). Senrelay-macOS.zip is free and MIT-licensed, targets Apple Silicon (arm64) on macOS 14.0 or later, and bundles Senrelay.app with a self-contained Python backend and built web workbench—no separate Python or Node installation is required to run the app (each AI assistant still uses its own host installation).
# Recommended: install via Homebrew Cask
brew install --cask qingsongcui/tap/senrelay
Verify SHA256SUMS before extracting manual archives. Because current Beta builds are ad-hoc signed and not Apple notarized, follow these two steps for first launch on macOS 14.0+ (never disable Gatekeeper globally):
- Move
Senrelay.appto/Applications; - Run
xattr -cr /Applications/Senrelay.appin Terminal to clear quarantine attributes (or allow it in System Settings → Privacy & Security → Open Anyway; source checkouts also includeapp/macos/install-macos.sh).
Package Disambiguation Note: Do not run pip install contextcore—the PyPI package with that name is an unrelated third-party project. For source mode, always clone this repository and run pip install -e 'app/backend[test]' below.
User data lives in ~/Library/Application Support/ContextCore. Closing the window (Cmd+W) keeps the background service running; stop it explicitly from Settings or contextcore stop when needed. Whole-database SQLite online backups are supported via contextcore backup, and removing the app bundle does not erase your saved projects, memories, or Keychain items.
Source Development Prerequisites
- OS: macOS 14.0 or later on Apple Silicon (supports macOS Keychain credential isolation and LaunchAgent supervision).
- Python: Python 3.12 recommended (minimum 3.11 with SQLite
blobopensupport). - Node.js: Node 22 LTS or Node 24 LTS (package engines
^22.22.2 || ^24.15.0 || >=26).
2. Install Dependencies From Repository Root
Run all setup commands from the repository root:
# 1. Create the backend virtualenv and install the package (registers the contextcore CLI)
python3.12 -m venv app/backend/.venv
app/backend/.venv/bin/python -m pip install -e 'app/backend[test]'
# 2. Install locked frontend dependencies
npm --prefix app/frontend ci --ignore-scripts
3. Launch the Workbench Mode A & Mode B
Choose between integrated serving (for everyday local use) or split Vite hot-reload mode (for frontend development).
Mode A: Integrated Workbench (Backend serves built frontend)
# Step 1: Build the frontend bundle into app/frontend/dist-staging
npm --prefix app/frontend run build
# Step 2: Start the local service on 127.0.0.1:18420 (or 8420 for daily service)
app/backend/.venv/bin/contextcore serve --host 127.0.0.1 --port 18420 --data-dir "$HOME/.contextcore/dev-data" --frontend-dir app/frontend/dist-staging
Open http://127.0.0.1:18420 in your browser (or http://127.0.0.1:8420 when running the persistent launchd service).
Mode B: Split Frontend & Backend Dev Mode (dev:isolated HMR)
# Terminal 1: Start API & MCP backend without static serving
app/backend/.venv/bin/contextcore serve --host 127.0.0.1 --port 18420 --data-dir "$HOME/.contextcore/dev-data" --no-static
# Terminal 2: Start isolated Vite dev server on port 15173 (proxies to 18420)
npm --prefix app/frontend run dev:isolated
Open http://localhost:15173 in your browser.
4. Core Workflows in Practice Core Workflows
① Multi-Host Config Switching & Sync
Open Agent Management, select a target host in the permanent top bar (Claude Code, Codex, Cursor, Antigravity, OMP, OpenCode, or extended hosts), and run One-Click Connect. Fill provider presets, run endpoint latency checks, switch or sync providers, MCP tools, Skills, and prompts with automatic snapshots and conflict diff checks, and import existing local configurations on demand.
② Companion Auto-Memory
Work naturally in any agent connected with companion MCP tools and Skills. Preferences, architecture decisions, constraints, milestones, and lessons are captured as source-linked structured memories with a brief 💡 receipt, while conflicting updates route to Pending Conflicts.
③ Cross-Agent Conversation Relay
Type /contextcore or say "Relay" in a new agent to list recent conversation candidates: pick just a number to load context, review a brief summary, and wait for your next prompt, or attach a concrete task to continue right away.
5. Local Data & Security Boundaries Data & Keychain
Local-First Storage & macOS Keychain Isolation
Session indexes, project memories, and configuration snapshots stay in your local Mac data directory (0700 directory mode, 0600 SQLite database files), with whole-database online backups available from Settings or contextcore backup. Provider API keys are isolated in macOS Keychain, and configuration exports exclude managed secrets by default.
Separate Permissions, Routing & Config Guard
Reading conversation history, modifying host configuration files, and downloading optional local semantic models require separate permissions that are never bundled. Each host supports Direct, Local Proxy Routing (with ordered fallback chains), or Model Aggregation, and every host file write saves an automatic rollback snapshot while blocking silent overwrites on external manual edits.