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 a portable AI context that travels between tools with explicit freshness, trust, and privacy rules.
Positioning:
ID is not another assistant. It is the protocol layer that keeps context explicit, portable, and auditable.SET, agentsmd, and other orchestrators by making context, contracts, and hooks first-class.Install with Homebrew:
brew install markoblogo/tap/id-protocol
idctl init --owner-id <owner-id>profiles/<owner>/profile.minimal.mdmake validatemake compactResult:
profile.minimal.md)context.compact.json)Lite path: minimal setup, get started fast → docs/LITE.mdShare path: multi-tool portability → docs/SHARE.mdBench path: evidence and claims → docs/BENCH.mdCopilot, Cursor, and Continue generate local prompt memories.ID gives a stable externalized profile and contract that those tools can consume.Runs 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=67 ttl=14
- profiles/markoblogo/profile.extended.md: score=0.0 age=66 ttl=30
ID now has a real execution role inside the wider ABVX toolchain:
SET can orchestrate repo-local ID hooks in compatible repositoriespre_task and weekly_reviewID stays the context/protocol layer, while SET stays the orchestration layeragentsgen remains the repo-docs/runtime companion, not a replacement for portable human contextPractical consequence:
ID-compatible, SET can validate or refresh human-context boundaries before and after the main repo workflowagentsgen is enough on its ownWhy this beats ad-hoc prompts or chat memory in some workflows:
system prompts are fragile and usually copied by hand across tools;ID makes preferences, constraints, freshness, privacy, and portability explicit and versioned.Evidence surface:
docs/PROOF.md (claim pack and caveats)benchmarks/runs/public-metrics.md (live utility summary)docs/MEASUREMENT.md and docs/EVALUATOR_PROTOCOL.md (method)docs/EVIDENCE_POLICY.md (evidence rules)Ecosystem map:
docs/ECOSYSTEM.mddocs/INTEGRATIONS.mddocs/README.mdRelease/install:
docs/RELEASES.mdID LiteUse this if you want the smallest practical entrypoint.
You get:
Start here:
docs/LITE.mdID ShareUse this if you want to move context safely between tools or people.
You get:
Start here:
docs/SHARE.mdID BenchUse this if you want proof that ID actually helps.
You get:
Start here:
docs/BENCH.mdInput:
profiles/<owner>/profile.core.mdprofiles/<owner>/profile.extended.mdFlow:
Output:
Input:
Flow:
Output:
Input:
Flow:
Output:
Input:
profiles/<owner>/interop.v1.jsonFlow:
Output:
.
├── benchmarks/
│ ├── tasks/
│ └── runs/
├── data/
│ ├── raw/
│ ├── normalized/
│ └── processed/
├── docs/
│ ├── PROTOCOL.md
│ ├── OPERATIONS.md
│ ├── INGEST_SOURCES.md
│ ├── PRIVACY.md
│ ├── VALIDATION.md
│ ├── INTEGRATIONS.md
│ ├── BENCHMARK.md
│ ├── INTEROP_V1.md
│ ├── HARDENING.md
│ └── ROADMAP.md
├── integrations/
│ ├── agentsmd/
│ ├── lab/
│ └── set/
├── lab/
│ └── experiments/
├── profiles/
├── schemas/
├── scripts/
├── templates/
└── README.md
Today this repository functions as:
It is no longer only an internal profile format or documentation experiment.
ID and lab.abvxlab.abvx is the broader experiment/catalog surfaceID sits in that ecosystem as a protocol/reference implementation for portable human-AI contextlab.abvx.xyz should be treated as an adjacent discovery or catalog surface, not the canonical protocol source of truthID and AGENTS.md GeneratorAGENTS.md Generator is companion tooling for generating and maintaining agent-facing repo instructionsID is the person/tool interaction protocol layerID defines portable human-AI contextAGENTS.md Generator helps produce repo-scoped agent guidanceagentsmd.abvx.xyz is the landing/product surface for that adjacent toolchain, not the ID protocol homeID and SETSET is the orchestration/execution layerID is now a real repo-local hook and protocol companion inside that orchestration pathID answers "what context should follow the human across tools?"SET answers "how should repo workflows execute those tools and hooks?"ID and DecisionMapDecisionMap is a standalone decision/strategy protocol + prompt toolkitID can be used as an optional portable context layer for long-running decision workDecisionMap remains usable with any LLM without IDIf you need:
IDAGENTS.md GeneratorSETspec/docs/VERSIONING.md, spec/CONFORMANCE.mddocs/RELEASES.mdlab.abvxSETdocs/spec/spec/v0.2/README.mdspec/CONFORMANCE.mdspec/CHANGELOG.mdspec/RFC/README.mddocs/VERSIONING.mddocs/COMPATIBILITY.mddocs/OBSERVED_BEHAVIOR.mdevidence/observed-behavior/*.jsondocs/EVIDENCE_POLICY.mddocs/CONTEXT_JSON_MAPPING.mdRecommended onboarding path:
python3 scripts/bootstrap_owner.py --owner-id <owner-id>make bootstrap-owner OWNER=<owner-id>templates/profile.minimal.mdprofiles/<owner>/profile.core.mdprofile.extended.md only after repeated workflows and misalignments are clearGuide:
docs/MINIMAL_PROFILE.mddocs/QUICKSTART.mddata/raw/<source>/data/normalized/<source>/python3 scripts/extract_profile.py --owner-id <owner-id>docs/PRIVACY.mddocs/PRIVACY_POLICY_V1.mddocs/THREAT_MODEL.mdpython3 scripts/validate_privacy_policy.py --owner-id <owner-id>python3 scripts/redact_for_sharing.pydata/processed/redaction-report.jsonpython3 scripts/validate_profile.py --owner-id <owner-id>python3 scripts/check_publish_guard.py --all-trackedpython3 scripts/session_update.py --owner-id <owner-id> --session-context "..." --sections-used "..." --changes-made "..."scripts/run_integration_hook.sh pre_task --owner-id <owner-id> --target agentsmdscripts/run_integration_hook.sh post_task --owner-id <owner-id> --session-context "..." --sections-used "..." --changes-made "..."scripts/run_integration_hook.sh weekly_review --owner-id <owner-id>docs/BENCHMARK.mddocs/EVALUATOR_PROTOCOL.mddocs/WHY_ID.mddocs/EXAMPLES.mddocs/PROOF.mdpython3 scripts/benchmark_report.py --run-id <run-id>python3 scripts/benchmark_trend_report.pypython3 scripts/benchmark_public_report.pypython3 scripts/benchmark_init_run.py --run-id <run-id> --tool <tool> --owner-id <owner-id> --profile-version <version>python3 scripts/benchmark_validate_run.py --run-id <run-id>docs/INTEROP_V1.mddocs/COMPATIBILITY.mddocs/CONTEXT_JSON_MAPPING.mddocs/MEASUREMENT.mddocs/THREAT_MODEL.mdpython3 scripts/export_context_compact.py --owner-id <owner-id>python3 scripts/validate_context_compact.py --owner-id <owner-id>python3 scripts/import_context_compact.py --owner-id <owner-id>python3 scripts/export_interop_v1.py --owner-id <owner-id>profiles/<owner>/interop.v1.json is versioned and must be regenerated after profile changespython3 scripts/validate_interop_v1.py --owner-id <owner-id>python3 scripts/import_mcp_resource.py --owner-id <owner-id>make validatemake bootstrap-owner OWNER=<owner-id>make interopmake compactmake mcpmake privacy-policymake observed-behaviormake metricsmake trenddocs/HARDENING.md.github/workflows/ci.ymlbenchmarks/runs/baseline-2026-03-31-codex/