Install & activate
Getting the Claude Code connector running is four moves: install the CLI, sign
in, bind your repo to a workspace, and wire the MCP server into Claude Code. The
CLI is a single binary named mla.
Install the CLI
mla ships through three channels. Pick one; all three install the same single binary. meetless.ai/install is the source of truth for these commands.
# curl installer (recommended, no Node required)curl -fsSL https://meetless.ai/install.sh | sh# Homebrew cask (macOS / Linux)brew install --cask meetless/tap/mla
# if brew refuses with "Refusing to load cask ... from untrusted tap":brew trust meetless/tap && brew install --cask meetless/tap/mla# npm (works everywhere Node 22+ runs, including Alpine/musl)npm install -g @meetless/mlaVerify the binary:
mla --versionSign in and bind a repo
-
Sign in.
mla loginopens the Console authorize page in your browser and captures a user session. Every action you take is then audited as you.Terminal window mla loginOn a headless or SSH box,
mla login --no-browser --port <forwarded-port>prints a URL to open elsewhere. -
Activate the repository. From the repo root,
mla activatebinds this folder to a workspace. If the folder has no workspace yet, it provisions one named after the directory; if it already has a marker, it binds to it.Terminal window mla activateSeveral repos, one workspace. A team that wants its repositories to share one governed memory binds each of them to the same workspace. Find the id, then bind each repo:
Terminal window mla workspace listcd ../other-repo && mla activate --workspace <id>Every bound folder reads the same decisions, rules and constraints, and each keeps its own scan root, so one repo’s
CLAUDE.mdis never served as another repo’s rules.--workspaceprovisions nothing; it refuses rather than repointing a folder that is already bound to a different workspace (move one deliberately withmla deactivatefirst). Do not put a single marker in a parent folder holding several repos to achieve this: the scan root is the marker’s directory, so that collapses every repo into one and does leak their instruction files into each other.Git worktrees need nothing. A linked worktree of an activated repository inherits its origin checkout’s workspace automatically, because the binding follows the repository rather than the directory. It keeps its own scan root and its own rules;
mla statussays so when a binding was inherited. Put a.meetless.jsonin the worktree only if you want it bound somewhere else. -
Wire the MCP server into Claude Code.
mla mcpstarts the Meetless MCP server over stdio, authenticated as you and scoped to the bound workspace. Add it as an MCP server in your Claude Code config withmla mcpas the command. This is what lets the agent query governed memory in a session. -
Verify the wiring.
mla doctorruns a health check and reports both lifecycles: whether the workspace is bound, and whether session capture is active.Terminal window mla doctor
What activate sets up
Activating does more than write a marker file. Conceptually, it binds the
workspace, installs the local capture hooks, scans the repo, and builds the
provisional context that injection will draw from. You do not drive any of that
by hand; activate is the one gesture that stands the connector up for this repo.
Turning it off
mla mute silences capture for the current session without unbinding anything.
mla deactivate removes this folder’s workspace binding. mla uninstall removes
the entire local footprint (state, hooks, and the skill) and tells you how to
remove the binary. None of those touch server-side data.