@ema.co/machina
v2026.7.17
Published
eMachina MCP server — the deterministic substrate for the harvest⟷curate knowledge loop. The agent thinks; this server provides state/context and executes structured operations.
Readme
eMachina
The domain-neutral knowledge loop — harvest → curate → retrieve → feedback — as a machine any
actor can use: agents, people, and services stop re-learning what's known, and what's known keeps
getting better from use. Charter: CHARTER.md.
Two layers, three install channels:
| Layer | What it is | Ships as |
| ----- | ---------- | -------- |
| Skills (the thinking) | skills/ — agent-skills packages (spec); flagship: harvest | plugin marketplace · npx skills add |
| Substrate (the executable) | src/mcp/ — the machina MCP server: yield management, curate (memorialize, charter-gated), retrieve (offline corpus recall), over an owned minimal atom kernel + markdown corpus | npm: @ema.co/machina |
Install
Everything (skills + MCP, recommended) — Claude Code:
/plugin marketplace add Ema-Unlimited/eMachina
/plugin install emachina@emaThe plugin's .mcp.json auto-launches the MCP server from npm (npx -y @ema.co/machina@latest) — nothing to build. Cursor: open a clone (skills load from .agents/skills/), or install via Cursor's marketplace when published.
Skills only — any supported agent, via skills.sh:
npx skills add Ema-Unlimited/eMachinaMCP server only — any MCP client:
{ "mcpServers": { "machina": { "command": "npx", "args": ["-y", "@ema.co/machina@latest"] } } }Tools: config (readiness) · yield (validate/list/get/scaffold harvest yields) · curate (publish/advise — content-addressed dedup, blocking validation, charter gate) · retrieve (search the local corpus + yields, offline, audience-filtered). Server docs: src/mcp/README.md.
Skills
| Skill | What it does | Docs |
| ----- | ------------ | ---- |
| harvest | Universal context harvester — gather/synthesize context from files, URLs, transcripts, CRM, web, or tools into one contract-valid harvest-yield.md (findings only; derivations are projections). Invoke with /harvest. | Architecture · Charter |
The knowledge model (one paragraph)
Knowledge lives as atoms — markdown docs with a minimal frontmatter manifest (schema): content-addressed identity (identical content ⇒ identical id ⇒ dedup by construction), a single fail-closed audience ACL token, active|retracted lifecycle. The local corpus (.knowledge/atoms/, gitignored) is the staging tier; the org tier (GCS + Discovery Engine) is consumed at runtime via MCP interfaces — never a build dependency. Versioning has no lineage pointers: re-curating a changed artifact under the same (kind, name) tombstones the prior version. Charters (kind: charter) are gated at the write path — no mission/owner/status, no entry.
Develop on this repo
- Clone and open — packages under
skills/are live via the symlink hub; the MCP builds withnpm run check(tsc + bundle + ESM verify + full test suite; 15 tests incl. golden-vector wire-conformance and the charter gate). - Read the guidelines —
AGENTS.mdis canonical (CLAUDE.mdimports it); skills authorship:skills/AGENTS.md; MCP changes:src/mcp/AGENTS.md. - Validate before you push:
claude plugin validate .claude-plugin/marketplace.json --strict # plugin manifest
npm run check # MCP: build + tests
python3 skills/harvest/evals/scripts/validate_yield.py <yield.md> # yield contract (needs pyyaml)- Ship via PR — main is protected. Releases are cut as GitHub Releases (
vYYYY.M.D); CI publishes@ema.co/machinavia npm OIDC trusted publishing (no tokens).
Layout
CHARTER.md # the project charter (mission · goals · bar)
.agents/plugin/marketplace.json # canonical manifest — marketplace "ema" → plugin "emachina"
.claude-plugin/ · .cursor-plugin/ # symlinked views of the manifest — never edit directly
.agents/skills → ../skills # agent-agnostic hub (.claude/skills routes through it)
skills/<name>/ # canonical skill packages (each may carry its CHARTER.md)
src/mcp/ # the machina MCP server (+ src/mcp/atom/ — the owned kernel)
schemas/atom.schema.json # the atom contract, as a served artifact
docs/charters/ # entity-less standing charters (e.g. curator-memorialization)
.harvest/ # harvest runtime yields (gitignored; AGENTS.md tracked)
.knowledge/ # local atom corpus — the staging tier (gitignored)