End-to-end workflow for adding or changing Overmind MCP tools, resources, prompts, authentication, or result contracts — server layers, catalog registration, MCP-impact classification, and required…

AGPL-3.0Auto-check passedAgent Workflows

Install MCP

skills CLI
$ npx skills add overmind-core/overmind --skill mcp -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install overmind-core/overmind mcp --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/overmind-core/overmind.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/mcp .claude/skills/mcp && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
mcp
GitHub stars
544
Token cost
~4.3k tokens
SKILL.md length
1,955 words
Files
1
Skills in repo
20
Repo updated
First seen
Licence
AGPL-3.0

At a glance

End-to-end workflow for adding or changing Overmind MCP tools, resources, prompts, authentication, or result contracts — server layers, catalog registration, MCP-impact classification, and required…

  • Works in 7 steps: Classify the change above. Reuse a… → Add strict Pydantic request and response… → Put the handler in the matching… → …
  • Removing an MCP tool
  • SKILL.md covers MCP-impact classification, Shape of the server, Layer ownership and Authentication and authorization, plus 6 more sections
  • Needs POSTHOG_PROJECT_TOKEN

What it does

MCP is an agent skill from overmind-core/overmind. End-to-end workflow for adding or changing Overmind MCP tools, resources, prompts, authentication, or result contracts — server layers, catalog registration, MCP-impact classification, and required tests. Use when adding, changing, or removing an MCP tool, resource, prompt, auth rule, or CallToolResult contract.

Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol. The repository describes itself as: The platform for continuously improving AI agents. The licence is AGPL-3.0.

When your agent uses it

  • Removing an MCP tool
  • CallToolResult contract

Example prompts

  • “/mcp”

Requirements

  • A credential in POSTHOG_PROJECT_TOKEN

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Classify the change above. Reuse a current tool when the agent intent is
  2. Add strict Pydantic request and response models under
  3. Put the handler in the matching services/mcp/tools_.py module.
  4. Register one ToolDefinition through that module's
  5. Return the declared output model, never a raw dictionary. The catalog
  6. For background work, return a JobReceipt-shaped object with kind, id,
  7. Add a prompt only when the public tool sequence needs reusable guidance or

What it can do on your machine

Read from SKILL.md and the folder at commit 2c65378. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • POSTHOG_PROJECT_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

MCP loads about 4.3k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,955 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~4.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from overmind-core/overmind at commit 2c65378, republished under its AGPL-3.0 licence (© overmind-core). 1,955 words, ~4,269 tokens.

Download SKILL.mdSave it as .claude/skills/mcp/SKILL.md (or your agent's skills folder).
name
mcp
description
End-to-end workflow for adding or changing Overmind MCP tools, resources, prompts, authentication, or result contracts — server layers, catalog registration, MCP-impact classification, and required tests. Use when adding, changing, or removing an MCP tool, resource, prompt, auth rule, or CallToolResult contract.

Adding or changing MCP

Platform-agent procedure for changing the server. The skill shipped by overmind init is overmind/skills/overmind/ — do not copy this file there.

The MCP server is the project-scoped agent API. It shares domain services with the Console and REST API; it does not proxy either of them.

The optional Claude Code, Codex and Cursor plugins under overmind/.{claude,codex,cursor}-plugin/ package the existing MCP connection and shared workflow skills; their versions match SKILLS_VERSION in overmind/overmind/skills_db.py. The focused skills in overmind/skills/overmind-*/ cover Agent, Observability, Datasets, Evaluations, Optimiser, Training, Inference and Integrations; the main overmind skill keeps local setup and workflows across surfaces. CLI initialization installs all of them. Essential client-independent guidance belongs in server initialization, tool descriptions and resources; longer workflows use native prompts and skill fallbacks. The current-project resource includes console_url from FRONTEND_URL for ordinary browser navigation. Do not make a plugin or a custom UI a prerequisite for platform operations.

MCP-impact classification

For every new or modified Overmind capability, function, API workflow, or Console workflow, make an explicit MCP-impact decision in the same change. A change is not complete merely because the frontend works. Classify it as one of the following:

  • MCP-ready — an agent can discover, inspect, or progress the workflow. Add or update the smallest appropriate MCP tool, resource, or prompt in the same change.
  • CLI-guided — the workflow needs local files, repository edits, a binary download/upload, or third-party connector credentials. MCP supplies the state, exact identifiers, and a structured human/coding-agent action; the existing CLI or SDK performs the local transfer or edit.
  • Frontend-only — presentation, navigation, visual exploration, billing, or another workflow that has no useful safe agent action. The underlying project state remains MCP-ready when it is useful to agents.
  • Out of scope — destructive operations remain absent from the public MCP surface until explicitly designed and authorized.

Record a concrete reason when a change is not MCP-ready. Do not silently let the Console become the only way to complete an agent-relevant workflow.

Textual state is the required baseline. Console-only visualizations may stay visual, but their underlying inspectable data and agent actions should be available through the appropriate MCP surface when they pass the classification above.

Shape of the server

text
MCP client
  -> /api/mcp/ Streamable HTTP
  -> MCPAuthMiddleware + MCPTransportMiddleware
  -> request-scoped MCPContext
  -> low-level MCP Server callbacks
  -> curated ToolCatalog
  -> feature tool adapter + strict input/output contracts
  -> existing domain service / model / task
  -> compatible CallToolResult + resource links
  -> client reads overmind:// resources or polls a job receipt

The entrypoint is overbae/api/mcp.py; ASGI mounts it through overbae/asgi.py as the outer Starlette app with Django at /. /api/mcp/ never runs Django's request_started/request_finished, so MCPAuthMiddleware recycles the thread-local DB connection itself. overbae/services/mcp/server.py owns the official MCP SDK server, stateless Streamable HTTP transport, protocol checks, resource and prompt callbacks, and middleware ordering. Do not create a second MCP app or mount a feature-specific server. With a PostHog token (POSTHOG_PROJECT_TOKEN, or the committed default on hosted Clerk deployments without DEBUG), it also instruments the server with PostHog MCP analytics ($mcp_* events, a session-token wrapper on the MCP route, a flush at lifespan shutdown). Events identify the caller by Clerk user id, the Console's distinct id, and carry project_id. They are metadata only: before_send drops tool arguments, results and error text (failures keep error_code), and $exception capture is off. Argument injection stays off: catalog input models forbid extra fields. tests/test_mcp_analytics.py holds these invariants.

Layer ownership

LayerLocationResponsibility
Transportservices/mcp/server.pyMCP protocol, allowed hosts/origins, request-size limit, SDK callbacks.
Authenticationservices/mcp/auth.pyAuthenticate an account/project API key or MCP OAuth token, enforce credential limits, and bind context.
Contextservices/mcp/context.pyMake immutable {user, token, project, client_ip} available only during the request.
Catalogservices/mcp/catalog.pyPublish a curated visible tool set, validate contracts, invoke handlers, and turn known failures into MCP results.
Contractsservices/mcp/contracts/Strict Pydantic input/output models, resource links, page metadata, and job receipts.
Feature adaptersservices/mcp/tools_*.pyResolve project-scoped references and adapt a semantic MCP intent onto domain services.
Domain logicexisting services/, models, tasksOwn business rules, persistence, authorization-sensitive state transitions, and background work.
Results and errorsresult_compat.py, errors.pyPreserve all typed output for every client and emit safe, stable error values.
Resourcesresources.pyRead-only, project-scoped entity state and static CLI handoff guidance.
Promptsprompts.pyNative multi-step workflow instructions composed from the public catalog.

Tools must call the domain layer directly. They may share serializers or entity-resolution helpers where those express domain semantics, but must not invoke frontend code, Console tool registries, or an internal REST endpoint.

Authentication and authorization

Every MCP request is authenticated before the SDK callback runs. Account API keys and OAuth grants can access active projects belonging to their user; project API keys remain limited to their one project and allowed IPs. All credentials enforce public read and/or write permissions. list_projects returns only accessible projects. The catalog resolves project_id against membership before invoking project handlers; handlers receive the selected project only through MCPContext. Resources accept the same project_id as a query parameter. Account result links retain it. Selection is per request, never shared session state; missing or inaccessible projects are rejected.

OAuth uses the installed MCP SDK protocol handlers and durable, hashed codes and tokens in models/mcp_oauth.py. Console sign-in and explicit consent grant account access, including future memberships. Public clients register with auth method none and S256 PKCE. Authorization and token exchange require the exact MCP_SERVER_URL resource. Access tokens expire after one hour; refresh tokens rotate without a time-based expiry; authorization continues until revoked. Refresh-token reuse revokes the family. Account status and project memberships remain enforced on every request. OAuth credentials work only on MCP. API keys remain supported through X-Api-Key or Authorization: Bearer.

Set MCP_SERVER_URL to the deployed HTTPS /api/mcp/ URL (local loopback HTTP is supported). Only configured OAuth servers advertise a Bearer challenge and discovery/registration routes. OPENAI_APPS_CHALLENGE serves the public domain verification token at /.well-known/openai-apps-challenge.

ToolDefinition.required_scopes records the product capability a tool needs (overmind:read, overmind:data:write, and so on). Catalog visibility currently enforces the public read_only/read versus mutation/write boundary. If more granular API-key enforcement is introduced, implement it in the catalog/auth layer for every tool—do not add one-off handler checks.

The public surface remains read and write only. The catalog rejects destructive tool names and destructive metadata. Do not add delete, remove, cancel, or undeploy operations without an explicit public-surface decision. The sole documented lifecycle exception is retry_deployment; do not add other retry operations without an explicit public-surface decision.

Adding or changing a tool

  1. Classify the change above. Reuse a current tool when the agent intent is unchanged; do not mirror a REST endpoint merely because it exists.
  2. Add strict Pydantic request and response models under services/mcp/contracts/<domain>.py. Extend MCPModel, bound collection sizes and strings, and reject unknown fields. Use aliases only when they preserve a deliberate public compatibility contract.
  3. Put the handler in the matching services/mcp/tools_<domain>.py module. Resolve all entities within context.project, call the existing domain service/model/task, and translate expected failures to MCPError.
  4. Register one ToolDefinition through that module's register_<domain>_tools function. Declare accurate read_only, idempotent, open_world, required_scopes, cost_class, and async_mode metadata. The central CATALOG imports feature registrations; add a new import there only when introducing a genuinely new domain module.
  5. Return the declared output model, never a raw dictionary. The catalog validates it before publishing. Add a resource or resource_links field for durable entities that the agent can inspect next.
  6. For background work, return a JobReceipt-shaped object with kind, id, status, and an overmind://jobs/{kind}/{id} resource. Ensure get_job and the resource reader understand that job kind before shipping.
  7. Add a prompt only when the public tool sequence needs reusable guidance or a human approval checkpoint. A prompt coordinates tools; it never becomes a hidden implementation of a state change.

Keep handlers thin. If a Console workflow lacks a reusable domain service, fix that service boundary first and have both surfaces call it. Do not copy the Console view's business logic into tools_*.py.

Show full SKILL.md (699 more words)Show less

Result and error contract

ToolCatalog.call validates the input model, runs the handler, validates the output model, then passes its JSON form to tool_result. tool_result emits the same complete object in two forms:

  • structuredContent for MCP clients that preserve structured fields.
  • Compact JSON TextContent for clients such as CallDynamicTool that only expose text to the model.

When output contains resource or resource_links matching ResourceLinkContract, result_compat.py also emits deduplicated native MCP ResourceLink content. Do not place identifiers, cost estimates, row data, or a job receipt only in prose; they must be fields of the output contract.

Expected failures raise MCPError, which becomes {"error": {"code", "message", "retryable", "fields"}} with isError=true and the same JSON-text compatibility. Unexpected failures become the safe internal_error; do not leak exceptions, provider responses, tokens, or tracebacks. Resource reads use MCP protocol errors for malformed or missing URIs, but must retain the same project boundary and safe message discipline.

Resources, jobs, and local-file workflows

Resources are durable, read-only state—not a second mutation API. Add a resource template when a tool returns an entity the agent needs to reread, resume, or inspect. Implement its project-filtered payload in services/mcp/resources.py, register its template, and produce links with resource_link; do not manufacture URI strings in individual handlers.

safe_json is the resource serialization boundary. It bounds output and removes sensitive fields. Keep access tokens, credentials, API keys, cookies, private material, presigned URLs, and checkpoint URLs out of both tool and resource output.

MCP carries JSON state, not local binary bytes. For uploads, exports, checkpoints, repository edits, or local execution, return or link the appropriate CLI guidance resource and give the coding agent exact IDs and arguments. The CLI/SDK performs the filesystem action; MCP resumes at the resulting build, dataset, deployment, or job resource.

Prompts and tool catalog discipline

Prompts in services/mcp/prompts.py are named, parameterized public recipes. They should name the public tools/resources to call, include approval and human-action boundaries, and finish with a decision checkpoint. Do not add a prompt to compensate for a missing primitive tool, and do not add a tool merely to support a one-off prompt sentence.

Keep the catalog organized by user intent: discovery/read, mutation, background work, and CLI/local handoff. Tool descriptions should say the goal, the important constraint, and the returned next state. A broad search or inspection tool is preferable to a cluster of near-duplicate filters; distinct state transitions deserve distinct mutation tools.

Required tests

Follow the testing policy in AGENTS.md. For every MCP change, verify the applicable outcomes below through existing E2E coverage first. The listed files locate existing focused coverage; they are not a requirement to add unit tests after implementation. If isolation is necessary, document failure modes before writing code.

ChangeMinimum proof
Tool contract or catalog metadataSchema, annotations, permission visibility, input rejection, output validation in tests/test_mcp_catalog.py or the domain test.
Feature toolHappy path, project isolation, expected errors, complete structured output, and returned resource/job identifiers in tests/test_mcp_<domain>.py.
Result formatJSON text exactly matches structuredContent; resource links are emitted and deduplicated in tests/test_mcp_result_compat.py.
Resource or job kindProject scoping, safe redaction, not-found behavior, and transport read in tests/test_mcp_resources.py.
Auth or transportProject-scoped key, read/write boundary, headers, protocol, and origin/host behavior in tests/test_mcp_authorization.py.
Prompt or CLI handoffPrompt arguments and rendered workflow in tests/test_mcp_prompts.py; CLI command behavior in overmind/tests/ when it changes.

Run the relevant MCP tests plus pre-commit run --files for changed files. If the feature also changes the REST contract used by the Console, regenerate the frontend API client as part of that API change; MCP tools themselves do not use the generated client.

Completeness checklist

Before shipping an agent-relevant change, verify all applicable items:

  • The MCP classification and, if omitted, its concrete reason are recorded in the PR or implementation plan.
  • The MCP tool/resource/prompt uses the shared domain service and respects existing project-scoped API-key authorization.
  • Inputs, full structured outputs, JSON text compatibility, resource links, and async receipts are defined and tested.
  • The entity has a read path after creation or mutation, including polling for background work.
  • Local-file workflows have CLI guidance rather than an MCP byte-transfer workaround.
  • The curated catalog, prompt list, resource list, user-facing Overmind skill (overmind/skills/overmind/), and MCP tests are updated together. Regenerate API clients when the API contract changed.

© overmind-core, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/mcp of overmind-core/overmind.

Open the folder on GitHubat commit 2c65378

Compare with similar skills

MCP next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

MCP compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
MCP this skillovermind-core/overmind544—~4.3kAutomated safety check: PassAGPL-3.0
MCP Server Builderanthropics/skills180k62 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k5 repos~1.2kAutomated safety check: PassMIT
MCP Integration for Pluginsanthropics/claude-plugins-official37k11 repos~3.1kAutomated safety check: PassApache-2.0
Fastmcp Client CLIPrefectHQ/fastmcp28k1 repos~823Automated safety check: PassApache-2.0
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 62 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 5 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    37k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • Fastmcp Client CLI

    PrefectHQ/fastmcp

    Query and invoke tools on MCP servers using fastmcp list and fastmcp call.

    28k GitHub starsUsed in 1 repo~823 tokens
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Context Mode Output Sandbox

    mksglu/context-mode

    Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.

    26k GitHub stars~4.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from overmind-core/overmind

All 20 skills in this repo
  • API Endpoints

    overmind-core/overmind

    End-to-end workflow for adding or changing a backend API endpoint — which module the serializer and view belong in, URL registration, OpenAPI client regeneration, and typed consumption from the…

    544 GitHub stars~830 tokensUpdated yesterday
    Auto-check: notes
  • Finetuning Model Onboarding

    overmind-core/overmind

    Rules for adding a new model or model family to the finetuning pipeline, or changing finetuning behavior for an existing one — engine-agnostic customization via family hooks instead of if/else in…

    544 GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Frontend Design

    overmind-core/overmind

    Overmind Console design system — semantic tokens, shared primitives, geometry and icons, the border-contrast floor, the duplicated table implementations, and the verification scripts.

    544 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • PR Etiquette

    overmind-core/overmind

    How to open a complete pull request on overmind-core/overmind — the CI gates, the cross-cutting surfaces a change must carry with it (MCP, blast radius, the docs repo), gh pr edit being broken here…

    544 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Seed Demo Data

    overmind-core/overmind

    Run or modify the seeddemo management command (the one-project Support Copilot demo) without breaking the beat-safety invariants that keep celery workers from re-driving seeded rows.

    544 GitHub stars~973 tokensUpdated yesterday
    Auto-check passed
  • Overmind Agent

    overmind-core/overmind

    Inspect an Overmind project's agent map, capabilities, behaviour contracts, repository provenance and evaluation coverage.

    544 GitHub stars~797 tokensUpdated yesterday
    Auto-check passed

Categories

Questions about MCP

What does MCP do?

End-to-end workflow for adding or changing Overmind MCP tools, resources, prompts, authentication, or result contracts — server layers, catalog registration, MCP-impact classification, and required…. MCP is an agent skill from overmind-core/overmind. End-to-end workflow for adding or changing Overmind MCP tools, resources, prompts, authentication, or result contracts — server layers, catalog registration, MCP-impact classification, and required tests.

When should I use MCP?

MCP fits situations like: removing an MCP tool; callToolResult contract.

How do I install MCP in Claude Code?

Run `npx skills add overmind-core/overmind --skill mcp -a claude-code`. Or copy the skill folder (.agents/skills/mcp in overmind-core/overmind) into .claude/skills/mcp in your project. Claude Code loads it when a task matches its description.

How do I install MCP in Codex?

Run `npx skills add overmind-core/overmind --skill mcp -a codex`. Or copy the skill folder (.agents/skills/mcp in overmind-core/overmind) into .agents/skills/mcp in your project. Codex loads it when a task matches its description.

Can I use MCP in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add overmind-core/overmind --skill mcp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mcp, .gemini/skills/mcp, .github/skills/mcp and .opencode/skills/mcp in your project.

What does MCP need to run?

Going by SKILL.md and its folder, MCP needs credentials named POSTHOG_PROJECT_TOKEN. Our summary lists: A credential in POSTHOG_PROJECT_TOKEN.

Does MCP access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is MCP safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does MCP use?

MCP is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does MCP use?

About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to MCP?

Skills that share tags, products or a category with MCP: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 37k stars) and Fastmcp Client CLI (PrefectHQ/fastmcp, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains MCP?

overmind-core (a GitHub organization) maintains it in overmind-core/overmind, which has 544 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 6, 2026.

Source: overmind-core/overmind on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.