Forge

docs/ / local-dev-docker.md · branch master

Local dev: Docker + MCP (рекомендуемый пилот)

Идея: Forge всегда в Docker; агент в Cursor ходит через AgentForge.Mcp на http://127.0.0.1:8770. Терминалы с dotnet run не нужны.

1. Поднять стек

cd agent-forge
.\scripts\docker-up.ps1

Создаёт .env из .env.example, собирает и запускает:

Сервис Порт Роль
forge 8770 API + UI + WitDB (volume forge-data)
git-ssh 2222 git clone / push по SSH

Остановить: .\scripts\docker-up.ps1 -Down
Логи: docker compose logs -f forge

Схема WitDB: EF migrations (src/AgentForge/Data/Migrations/). При старте — Migrate(); старые volume после EnsureCreated допатчиваются автоматически. Полный сброс данных: docker compose down -v.

Новая миграция после смены модели (из корня репо, dotnet-ef 10.0.9 в dotnet-tools.json):

dotnet tool restore
cd src/AgentForge
dotnet ef migrations add <Name> --output-dir Data/Migrations

2. Auth (один раз на хосте)

Токен живёт на хосте в ~/.forge/credentials.json — контейнер его не монтирует.

forge auth login --device --host http://127.0.0.1:8770
# Approve в http://127.0.0.1:8770/view/auth/device с FORGE_BOOTSTRAP_TOKEN из .env

3. MCP в Cursor

.\scripts\publish-mcp.ps1

В Cursor → MCP:

{
  "mcpServers": {
    "forge": {
      "command": "D:\\agent-forge-mcp\\AgentForge.Mcp.exe",
      "env": {
        "FORGE_BASE_URL": "http://127.0.0.1:8770"
      }
    }
  }
}

После forge auth login MCP подхватит Bearer из ~/.forge/credentials.json.

4. Git (опционально)

В .env задай FORGE_GIT_AUTHORIZED_KEYS (содержимое id_ed25519.pub), перезапусти compose.

Почему не dotnet run

  • один docker compose up вместо фоновых терминалов;
  • данные в volume, перезапуск ОС не теряет репо;
  • тот же compose ближе к IT CAD deploy.

MCP остаётся на хосте (stdio + Cursor) — так у всех MCP-серверов; в Docker кладём только HTTP API.

View only · write via MCP/CIDE