DocumentationIntroduction

Introduction

Every major AI coding tool — Claude Code, Codex, Cursor, Windsurf, OpenCode — invents its own project folder: .claude/, .codex/, .cursor/, .windsurf/. Each one stores the same kind of knowledge: which agents exist, what the project rules are, which skills and MCP servers matter. The result is the same context duplicated under many vendor names.

APC, Agent Project Context, is a proposal for those tools to converge on one neutral name: .apc/.

The mission is not for developers to maintain yet another folder. The mission is for tool vendors to adopt .apc/ as their native default, replacing their own branded directories. APX is the reference runtime that enables this today, before native vendor support exists.

APC answers one narrow question:

What should every compatible agent know when it enters this project?

APC is not an agent runner, database, daemon, IDE plugin, or chat transcript store. It is the project-owned context layer that any compatible tool can read before it starts work.

APC as a shared project context layer between AI applications and project data, knowledge, tools, and integrations.

The split APC enforces

Agent systems usually mix three different things:

  • project contract: durable rules, skills, architecture notes, MCP expectations
  • agent definitions: roles, activation descriptions, model inheritance, skills
  • runtime state: sessions, conversations, tool outputs, caches, private runtime memory, provider threads
  • private configuration: API keys, tokens, local paths, personal preferences

APC keeps the project contract and structured agent definitions in the repository. Runtime state and private configuration stay outside the repository, owned by the IDE, CLI, daemon, or user machine that produced them.

Goals

  • reduce duplicated context across IDE-specific folders
  • keep durable context close to the codebase
  • make context inspectable, reviewable, and versionable
  • provide a neutral layer for agents, IDEs, and developer automation
  • prevent raw sessions and private tool output from being committed by accident
  • let different runtimes consume the same project contract without sharing sensitive transcripts

Canonical directory

The canonical repository directory is:

.apc/

Typical APC content includes:

  • project metadata
  • agent definitions
  • rules, including optional path-scoped rules
  • durable project plans
  • skills
  • curated project memory, only when safe to share
  • optional MCP configuration hints, without secrets

Typical APC content does not include:

  • raw chat sessions
  • provider conversation threads
  • tool call logs
  • API keys or bearer tokens
  • OAuth tokens, private headers, or credentials in MCP URLs
  • unreviewed auto memories
  • private scratch plans
  • personal preferences for one IDE

Relationship to existing tooling

APC is designed to coexist with:

  • AGENTS.md
  • IDE-specific folders
  • local or hosted agent runtimes
  • MCP registries and tool servers

The goal is not to forbid tool-specific configuration. The goal is to stop copying the same project meaning into .claude/, .cursor/, .codex/, .opencode/, and other runtime-specific places. See One Context, One Name for the full rationale.

Each IDE or runtime may still keep its own sessions and transcripts. That separation is intentional: sessions often contain private prompts, credentials pasted by mistake, production data, or customer details. APC should expose durable project meaning, not every conversation that happened near the project.

APC can be the source for shared project meaning while runtimes keep projection files they need. For example, .apc/rules/*.mdc can be projected into .cursor/rules/, and .apc/mcps.json can be projected into .cursor/mcp.json or another runtime-specific MCP config. Those projections should not become secret stores or raw session stores.