The CLI is published on npm (npm i -g @aex-lang/cli). APIs are experimental and may change before v1.0. Roadmap →
Skip to content

Roadmap ​

Maturity Levels ​

LabelMeaning
StableAPI is unlikely to change. Covered by tests and used in production workflows.
AlphaFunctional and tested, but the API may change before v1.0.
ExperimentalWorks end-to-end but may have rough edges. Feedback welcome.
PlannedDesigned but not yet implemented.

Implemented in Repo ​

All @aex-lang/* packages are published on npm (v0.0.4). APIs are not yet stable — expect breaking changes before v1.0.

  1. Runtime (Alpha)
    • [x] Built-in checks (patch touches only, diff linting)
    • [x] Tool registry (file.write, tests.run, git.diff, git.apply)
    • [x] Command injection and path traversal prevention
    • [x] JSON IR compilation
  2. Adapters (Alpha)
    • [x] OpenAI Agents SDK (@aex-lang/openai-agents)
    • [x] MCP gateway (@aex-lang/mcp-gateway)
    • [x] LangGraph compiler (@aex-lang/langgraph)
  3. Developer experience (Alpha)
    • [x] aex fmt auto-formatter
    • [x] CLI diagnostics with error codes
    • [x] VS Code extension (syntax highlighting, snippets)
    • [x] Interactive playground on docs site
  4. Security (Experimental)
    • [x] Threat-model reference implementation
    • [x] Signed contracts (aex sign / aex verify)
    • [x] Timing-safe HMAC verification
  5. Model handlers (Experimental)
    • [x] Built-in OpenAI handler (AEX_MODEL=openai)
    • [x] Built-in Anthropic handler (AEX_MODEL=anthropic)
    • [x] Custom handler support (--model-handler ./path.ts)
    • [x] Budget enforcement at runtime (cap do/make invocations)
  6. Control flow (Alpha)
    • [x] if conditional branching with indentation-based blocks
    • [x] for loop iteration over lists
    • [x] Nested control flow (if inside for, etc.)
  7. Remote tool registries (Experimental)
    • [x] aex run --registry <url> fetches tool definitions from HTTP endpoints
    • [x] Remote tools execute via POST with JSON args/response
  8. Policy inheritance & composition (Alpha)
    • [x] extends field in policies (file path or inline object)
    • [x] composePolicies() merges allow/deny/confirmation/budget
    • [x] Budget takes the minimum across composed policies
  9. Structured logging & OpenTelemetry (Experimental)
    • [x] createStructuredLogger() with timestamps, traceId, spanId
    • [x] --log-json flag for JSON event output
    • [x] --otlp-endpoint flag exports traces in OTLP format
    • [x] exportToOTLP() API for programmatic export
  10. CI & publishing (Alpha)
    • [x] setup-aex GitHub Action (action/action.yml)
    • [x] npm publish config (publishConfig, exports, repository on all packages)
    • [x] scripts/prepublish.sh rewrites file: deps to versioned refs
  11. Policy files & merge semantics (Alpha)
    • [x] policy workspace v0 keyword for ambient security boundaries
    • [x] aex init --policy scaffolds .aex/policy.aex
    • [x] Merge semantics: allow = intersection, deny = union, confirm = union, budget = min
    • [x] aex effective previews merged permissions before running
    • [x] Parser-level validation: policy files reject need, do, make, check, return
  12. MCP proxy (Alpha)
    • [x] aex proxy -- <cmd> gates MCP tool calls against policy
    • [x] Auto-discovers .aex/policy.aex
    • [x] Budget enforcement, confirmation gates, allow/deny filtering
    • [x] Structured JSON audit logging to stderr
    • [x] tools/list response filtering
  13. Claude Code hook enforcement (Alpha)
    • [x] aex gate PreToolUse hook gates built-in tools (Read, Write, Bash, etc.)
    • [x] Tool name mapping: Claude Code PascalCase → AEX dotted capabilities
    • [x] Budget state persistence across hook invocations
    • [x] allow keyword for policy files, AEX120/AEX121 diagnostics
    • [x] task keyword as alternative to agent
  • [x] Fail-closed by default (denies all when no policy found)
  1. Draft → Review → Run workflow (Alpha)
    • [x] aex draft generates task contracts from natural language prompts
    • [x] aex review shows human-readable contract summary with effective permissions
    • [x] aex review --run prompts for approval then executes through runtime
    • [x] aex classify classifies prompts as exploratory/contract_recommended/contract_required
    • [x] .aex/runs/ directory for generated one-off contracts
    • [x] Audit log output (.audit.jsonl) for executed contracts
    • [x] aex run auto-discovers .aex/policy.aex and supports .aex policy files
    • [x] LLM-powered contract generation with validation loop and retry

Up Next ​

  • Stable API guarantees (v1.0 milestone)
  • Independent security audit

Not Yet Done ​

  • No stable API guarantees
  • No independent security audit

Contributions are welcome — open an issue if you'd like to tackle an item or propose a new milestone.

Prompts are not permissions. Plans are not contracts.