이 설정을 끝내면 osFoundry의 Worker 롤을 Claude Code가 맡는다. 플랜의 단계가 Worker 차례가 되면 데스크톱 앱이 프로젝트 폴더에서 claude를 띄운다. 로그인은 본인 Claude 구독 그대로다. Claude Code는 파일을 자기 툴로 고치고, 노트 검색 같은 osFoundry 쪽 툴은 mcp__osfoundry__memory_search라는 이름으로 부른다. 이 호출은 하나하나 osFoundry 채팅에 "Using …" 줄로 찍힌다.
누가 뭘 하나
| Claude Code | osFoundry 데스크톱 앱 | |
|---|---|---|
| 로그인 | 본인 Claude 구독. /login 뒤에 CLI가 저장한다 |
아예 들여다보지 않는다. 자식 프로세스 환경에서 ANTHROPIC_API_KEY 같은 변수를 빼서 API 과금으로 넘어가지 않게 한다 |
| 비용 | 구독에서 나간다 | 실행 비용을 0으로 기록한다 |
| 파일 | 자체 Read, Edit, Bash로, 폴더 하나 안에서만(--add-dir) |
그 폴더를 고른다. Local Folders 중 가장 최근에 추가한 것 |
| osFoundry 툴 |
mcp__osfoundry__<tool>로 부른다 |
이번 실행 동안만 루프백 포트로 열어 주고, 호출마다 허용 목록과 대조한다 |
| 승인 | 자기 폴더 안에서는 --permission-mode bypassPermissions로 돈다 |
브리지를 거친 호출은 다른 모델의 툴 호출과 똑같은 승인·정책 게이트를 지난다 |
| 출력 | 최종 텍스트 | 롤의 출력이 된다. 툴 동작은 진행 줄로 보여 준다 |
설정
1. Claude Code 설치하고 한 번 로그인하기
CLI는 Anthropic 문서에 나온 대로 설치한다. 그다음 터미널에서 로그인한다.
$ claude
> /login
osFoundry는 바이너리를 PATH, ~/.claude/local, 그리고 VS Code 확장 번들(~/.vscode/extensions/anthropic.claude-code-*/resources/native-binary/claude) 안에서 찾는다. 그래서 VS Code 확장으로만 깔린 Claude Code도 잡힌다.
2. External AI에서 켜기
데스크톱 앱 헤더의 열쇠 아이콘(API Keys (BYOK))을 누르고 External AI(외부 AI) 탭을 연다. Claude Code 줄은 이렇게 보여야 한다.
Claude Code Installed [Enabled]
/Users/you/.claude/local/claude
Model id: cli:claude (chat) · cli:claude:agent (autonomous)
[Verify sign-in] [Sign in]
예시: External AI 탭의 Claude Code와 Codex
Verify sign-in(로그인 확인)을 누르면 앱이 CLI로 아주 작은 completion을 한 번 돌리고, ✓ Signed in이나 Needs sign-in을 띄운다. Sign in을 누르면 터미널 창에서 Claude Code가 열리고 "Type /login to sign in, then close this window."라는 안내가 나온다.
API key in env 배지가 보일 수도 있다. osFoundry를 띄운 환경에 ANTHROPIC_API_KEY 같은 변수가 잡혀 있다는 뜻이다. 앱은 claude를 띄우기 전에 이걸 지우니까 실행은 그대로 구독으로 돈다. 배지는 그냥 알림일 뿐이다.
3. 폴더 넘겨주기
에이전트 모드는 실제 디렉터리에서 돈다. Settings → Local Folders에 프로젝트를 추가한다. 여러 개 있으면 가장 최근에 추가한 게 쓰인다. Code 화면(Code surface)에서 시작한 실행은 대신 그 실행에 등록된 저장소를 쓴다.
4. 롤에 연결하기
Pipeline 탭 → Pipeline Roles를 연다. Agents 아래에서 Worker를 고르고, External AI (subscription) 그룹에서 cli:claude:agent를 선택한다.
두 ID는 서로 다른 모드다.
-
cli:claude:agent는 자율 모드다. Claude Code가 폴더 안에서 자기 툴을 쓰고, 브리지를 통해 osFoundry 툴도 부른다. Worker, Researcher, Document Agent 같은 롤에 쓰면 된다. -
cli:claude는 채팅 모드다. CLI가--disallowedTools '*'로 돌아서 아무것도 못 부른다. Titling이나 Compaction처럼 텍스트만 다루는 롤에 맞다. 툴이 필요한 롤에 이걸 붙이면cli:claude:agent를 쓰라는 메시지와 함께 실행이 실패한다.
Agents 화면에서 직접 만든 에이전트도 이걸 쓸 수 있다. 모델 선택기에서 CLI agents 아래에 "autonomous — runs in your local folder"라는 라벨로 나온다.
5. 앱이 실제로 띄우는 것
osFoundry는 실행마다 MCP 브리지를 새로 띄우고, 대략 아래처럼 CLI를 실행한다. 플래그는 src-tauri/src/providers/agent_cli.rs의 build_claude_command에서 가져왔다.
claude -p "<conversation>" \
--output-format stream-json --verbose --include-partial-messages \
--permission-mode bypassPermissions \
--add-dir /Users/you/work/site \
--mcp-config '{"mcpServers":{"osfoundry":{"type":"http",
"url":"http://127.0.0.1:<port>/mcp",
"headers":{"Authorization":"Bearer <per-run token>"},
"timeout":120000}}}' \
--strict-mcp-config \
--append-system-prompt "<role prompt>"
--strict-mcp-config 덕분에 본인이 전역이나 프로젝트에 넣어 둔 MCP 서버는 이번 실행에 안 끼어든다. 붙는 건 osfoundry 서버 하나뿐이다. 포트와 토큰은 실행마다 새로 만들고, 프로세스가 끝나면 리스너도 닫힌다.
실제로 돌려 보면
예시다. 노트와 저장소는 데모용 내용이다.
사용자 (Maestro 채팅, Worker = cli:claude:agent)
노트에서 Q4 예산 리뷰가 언제인지 찾아서 TODO.md에 추가해 줘.
Claude Code 툴 호출
mcp__osfoundry__memory_search {"query": "Q4 예산 리뷰"}
→ "Q4 예산 리뷰: 목 14:00."
Read TODO.md
Edit TODO.md (+ "- [ ] Q4 예산 리뷰(목 14:00)용 숫자 준비")
osFoundry 진행 줄
Using memory_search — {"query":"Q4 예산 리뷰"}
Using Read — {"file_path":"TODO.md"}
Using Edit — {"file_path":"TODO.md", …}
답변
TODO.md에 "Q4 예산 리뷰(목 14:00)용 숫자 준비"를 추가했습니다.
시간은 노트 "Q4 예산 리뷰: 목 14:00."에서 가져왔습니다.
mcp__osfoundry__ 접두사는 Claude Code가 osfoundry라는 서버의 툴에 붙이는 이름이다. osFoundry는 진행 줄에서 이걸 떼어 내기 때문에, memory_search가 API 모델로 돌릴 때와 똑같이 보인다.
어디까지 닿나
브리지가 내놓는 건 짧은 고정 목록이다. memory_search, web_search, extract_content, code_search, todo_list, transcribe, cloud_* 읽기 툴 같은 읽기 전용 툴, 오케스트레이션(spawn_fleet, graph_run, loop_run), 그리고 라이브 화면과 Canvas 툴이 들어 있다. read_file, write_file, execute_command는 일부러 뺐다. Claude Code에는 폴더 범위로 묶인 같은 기능이 이미 있고, MCP로 범위 제한 없는 실행기를 하나 더 주면 --add-dir 밖까지 손이 닿기 때문이다.
허용 목록은 CLI 플래그가 아니라 브리지가 강제한다. bypassPermissions 모드로 도는 실행은 --allowedTools를 따르지 않으니까, osFoundry는 아예 넘기지 않는다. 이번 실행 목록에 없는 툴을 부르면 JSON-RPC 에러 "tool '…' is not available to this agent"가 돌아온다.
워크스페이스와 채널은 브리지가 시작될 때 고정된다. 툴 호출이 인자를 바꿔서 다른 워크스페이스로 방향을 틀 수는 없다.
화면이나 Canvas 에디터에 쓰는 작업(ui_agent_act, Canvas 쓰기 툴)은 API 모델 때와 마찬가지로 항상 먼저 물어본다. 채널 멘션에 답하는 에이전트처럼 아무도 보고 있지 않은 실행에서는, 오지도 않을 클릭을 기다리는 대신 승인이 필요한 툴을 거절한다.
파일은 osFoundry를 거치지 않는다. Claude Code가 직접 읽고 고치고, 통신은 터미널에서 쓸 때처럼 본인 로그인으로 Anthropic에 간다.
다음 단계는 Worker 옆 Researcher 롤에도 cli:claude:agent를 붙이고, 오케스트레이션 태스크를 하나 돌려 보는 거다. 맡길 수 있는 롤은 Pipeline 롤 페이지에 전부 나와 있고, 작업 폴더가 어떻게 정해지는지는 Local Folders에 설명돼 있다.

Top comments (0)