Morey is a daemon. You install it, start it, and point your agent at its Unix socket. The agent framework stays untouched. No orchestration rewrites. No tool-call wrappers in your code โ the SDK handles that.
1. Install
macOS via Homebrew:
brew install equilateral-ai/tap/morey
Linux (static binary):
curl -fsSL https://seawater.io/install.sh | sh
From source (requires Rust toolchain):
git clone https://github.com/equilateral-ai/morey && cd morey && cargo install --path crates/morey-daemon
brew install seawater/tap/morey. The GitHub username seawater is claimed by a dormant account; until that resolves, the tap lives under equilateral-ai. The binary is identical.
2. Scan your environment
Before you connect any agent, audit your own machine. This runs entirely locally, reads nothing outside of common credential paths, and writes nothing.
morey scan
Typical output:
๐ Scanning environment...
โ ๏ธ ~/.aws/config: world-readable (644) โ should be 600
โ ๏ธ ~/.ssh/id_rsa: group-readable (640) โ should be 600
โ No API keys found in shell history
โ No credentials in environment variables
2 issues found. Run `morey scan --fix` to remediate.
morey scan --fix applies safe corrections (permissions only, never content edits). It is a Pro feature โ Free users can see the issues but fix them by hand.
3. Start the daemon
morey start
This opens ~/.morey/morey.sock (a Unix domain socket) and begins accepting agent connections. The daemon logs to ~/.morey/events.db (SQLite, encrypted at rest).
To run Morey as a launchd service on macOS:
morey install --service
4. Connect your agent
Node.js projects:
npm install @seawater_io/morey
import { Morey } from '@seawater_io/morey';
const morey = await Morey.connect({
agentId: 'my-agent',
capabilities: ['fs.read', 'fs.write', 'shell.exec', 'net.https'],
paths: ['/repo/**', '!/repo/.env'],
trustClaim: 'UNKNOWN',
});
// All tool calls go through morey.* โ it forwards, Morey decides
const contents = await morey.fs.read('/repo/README.md');
Python projects:
pip install https://seawater.io/releases/seawater_io_morey-0.1.0-py3-none-any.whl
from seawater_morey import Morey
morey = Morey.connect(
agent_id="my-agent",
capabilities=["fs.read", "shell.exec"],
paths=["/repo/**", "!/repo/.env"],
)
contents = morey.fs.read("/repo/README.md")
Shell scripts (no SDK needed):
morey exec --agent script-agent -- ./deploy.sh
5. Register a manifest
When the SDK calls Morey.connect(), it registers a manifest declaring what the agent needs. Morey evaluates this against policy and the agent's conduct history, then grants capabilities.
{
"agent_id": "my-agent",
"version": "1.2.0",
"capabilities_requested": ["fs.read", "fs.write", "shell.exec"],
"paths_requested": ["/repo/**", "!/repo/.env"],
"trust_claim": "UNKNOWN",
"metadata": {
"framework": "openclaw",
"model": "claude-sonnet-4-6"
}
}
A new agent claims UNKNOWN trust. Morey starts it at minimum access. Over time, as the agent demonstrates correct behavior, its batting average rises and the conduct engine escalates its authority โ automatically, subject to regression detection.
6. See what's happening
morey board
Interactive terminal dashboard showing connected agents, current trust levels, recent decisions, cost by agent, and live event stream. Pro feature.
morey replay --agent my-agent --last 10
Time-travel through the last ten decisions for a specific agent. Each decision frame is cryptographically signed and replayable. Pro feature.
7. Upgrade when you need it
The Free binary does not contain Pro code. Upgrading to Pro swaps the binary โ your config, storage, and agent manifests are unchanged.
morey license activate <key>
brew upgrade morey # or: morey self-update
Next steps
- How Morey works โ architecture deep-dive
- Pricing and tier comparison
- Blog โ vocabulary for agent governance