Portable human context that follows you between AI tools instead of living inside one chat product's memory. Exposes profile artifacts as MCP resources so Claude can read your preferences, constraints, and communication style without you repeating them every session. Includes validation hooks, redaction policies, and interop formats for handoffs between assistants or orchestrators. Reach for this when you want stable context across coding agents, editors, or analysts without manually pasting system prompts. Integrates with SET for repo-local orchestration and generates compact JSON artifacts from markdown profiles. Think of it as the protocol layer underneath assistants, not another assistant itself.
ID turns a person into portable AI context with explicit freshness, trust, provenance, and privacy rules.
It is not another assistant. It is the profile and contract layer that can travel across tools.
soul.md for fast agent bootstrapcontext.compact, interop.v1, mcp)SET, agentsgen, and other repo workflowsInstall:
brew install markoblogo/tap/id-protocol
Bootstrap:
idctl init --owner-id <owner-id>
idctl refresh-soul --owner-id <owner-id>
make validate
make compact
You end up with:
profile.minimal.md as the first owner checkpointsoul.md as the short reviewed handoff layercontext.compact.json as the portable compact artifactSource of truth:
profiles/<owner>/profile.minimal.mdprofiles/<owner>/profile.core.mdprofiles/<owner>/profile.extended.mdprofiles/<owner>/CHANGELOG.mdDerived layers:
profiles/<owner>/soul.mdprofiles/<owner>/context.compact.jsonprofiles/<owner>/interop.v1.jsonprofiles/<owner>/mcp.context.resource.jsonID keeps user context explicit, versioned, reviewable, and portablesoul.md exists because the full profile stack is often too heavy for the first pass. It gives agents a short bootstrap surface without replacing the canonical profile files.
ID owns portable human contextagentsgen owns repo-scoped agent contextSET can orchestrate both layersPractical rule:
ID for the humanagentsgen for the repositorySET when you want orchestration around bothLite: docs/LITE.mdShare: docs/SHARE.mdBench: docs/BENCH.mdSoul: docs/SOUL.mdIntegrations: docs/INTEGRATIONS.mdReleases: docs/RELEASES.mddocs/README.mdRuns analyzed: 4
| Metric | Value | Meaning |
|---|---|---|
| onboarding latency | 1.15 | Less is better |
| clarification turns | 0.85 | Less hand-offs |
| task success | 0.6 | Higher is better |
| alignment index | 18.3 | Higher is better |
Profile freshness score (owner markoblogo): 0.0
Key artifacts:
- profiles/markoblogo/profile.core.md: score=0.0 age=74 ttl=14
- profiles/markoblogo/profile.extended.md: score=0.0 age=73 ttl=30
idctl init --owner-id <owner-id>
idctl refresh-soul --owner-id <owner-id>
idctl validate
idctl export-compact --owner-id <owner-id>
idctl export-interop --owner-id <owner-id>
idctl export-mcp --owner-id <owner-id>
Today ID functions as:
Latest release: v0.3.0 adds the derived soul.md layer and refresh flow.