Early Alpha — v0.1.0-alpha.3

One config. All your
agents. Zero drift.

Four tools. One config.

$ npm i @nullbrain/dotai
Currently supporting

Same intent. Different files. Everywhere.

Claude Code

  • CLAUDE.md
  • .claude/settings.json
  • .mcp.json

Cursor

  • .cursor/rules/*.mdc
  • .cursor/mcp.json
  • .cursorignore

Codex

  • AGENTS.md
  • .codex/config.toml

GitHub Copilot

  • .github/copilot-instructions.md
  • .github/agents/*.agent.md
  • .vscode/mcp.json

They all want the same thing — how to behave in your repo.
They just can't agree on where to put it.

Three steps to unified configs

01

Define

Write your config once in .ai/. YAML + markdown.

02

Sync

One command. Every tool gets its native files.

03

Ship

Commit the output. Your whole team stays in sync.

config.yaml
version: 1 tools: - claude - cursor - codex - copilot rules: - rules/*.md skills: - skills/*/SKILL.md mcp_servers: github: command: npx @modelcontextprotocol/server-github

Works with what you're already using

Each tool gets exactly the files it expects. Generated from one .ai/ directory.

Claude Code

  • CLAUDE.md
  • .claude/settings.json
  • .mcp.json

Cursor

  • .cursor/rules/*.mdc
  • .cursor/mcp.json
  • .cursorignore

Codex

  • AGENTS.md
  • .codex/config.toml

GitHub Copilot

  • .github/copilot-instructions.md
  • .github/agents/*.agent.md
  • .vscode/mcp.json

Built to stay out of your way

  .ai/  
   │    
 ┌─┼─┐  
 ▼ ▼ ▼  

Sync everywhere

dotai sync generates the right files for every tool. One command, all targets.

CLAUDE.md
   ↓    
 scanner 
   ↓    

Import what you have

Already configured Claude Code or Cursor? dotai import converts it to .ai/ format. No starting over.

┌──┐ ┌──┐
│░░│≠│▓▓│
└──┘ └──┘
  ⚠ diff 

Your edits are safe

Manually tweaked a generated file? dotai detects it and won't overwrite without asking.

┌────────┐
│ ◉ .ai/ │
│ ◉ yaml │
└────────┘

Single source of truth

Rules, skills, agents, MCP servers, permissions — one .ai/ directory for everything.

[✓] yaml  
[✓] refs  
[✓] paths 
[✓] valid 

Catch mistakes early

dotai check validates your config before syncing. Typos don't make it to your tools.

+ skill/ 
+ agent  
+ hook   
= config 

Add what you need

Markdown rules, skill folders, agent configs, hooks. Use what's relevant, skip what's not.

No magic. Just a CLI.

Runs locally. Commits to git. Fits the workflow you already have.

Open source MIT license. Read every line.
Runs locally No cloud. No accounts. No phoning home.
Standard formats YAML + markdown in, tool-native files out.
Works with your stack Git, CI, monorepos — it's just files.
version: 1 tools: - claude - cursor - codex - copilot rules: - rules/*.md permissions: allow: - Bash(npm test) - Bash(npm run build) deny: - Bash(rm -rf *)
# Initialize a new .ai/ directory $ dotai init # Sync configs to all tools $ dotai sync # Check config validity $ dotai check # View sync status $ dotai status # Import existing configs $ dotai import
--- description: Code style rules globs: src/**/*.ts --- # TypeScript Style Guide - Use strict mode - Prefer const over let - Use explicit return types - No any — prefer unknown - Tabs for indentation

Give it five minutes.

One install. One sync. See what comes out.

$ npx dotai init