← 빌드 일지
일반2026-05-21·19분 읽기

Anthropic 이 같은 주에 SDK 공장을 사고 Karpathy 를 영입했다. 1 인 개발자 입장에서 이게 무슨 의미인지.

요약. 5/18 Anthropic 이 Stainless 를 인수했다. 자사 SDK 와 경쟁 랩들의 SDK 까지 만들던 SDK 자동 생성 회사다. 다음날인 5/19 OpenAI 공동창립자 Andrej Karpathy 가 Anthropic 의 pre-training 팀에 합류했다. 따로 읽으면 두 개의 뉴스다. 같이 읽으면 한 회사가 "표면 (개발자가 만지는 SDK / MCP 라인) 과 코어 (모델 자체) 를 동시에 밀어붙인다" 고 시장에 보내는 단일 신호다. 1 인 개발자 입장에서 실질적 결론은 한 줄로 끝난다. 팀이 있어야 가능했던 작업이 또 한 번 1 명에게 압축됐다. 이번 주 안에 손대야 할 4 가지는 prompt caching 켠 공식 SDK 호출, Skill 1 개, MCP 서버 1 개, 레포 루트의 CLAUDE.md 1 장이다.


두 헤드라인, 시간순

약 30 시간 사이에 두 발표가 떨어졌다.

5/18. Anthropic 이 Stainless 인수를 발표했다. Stainless 는 2022 년 설립, Anthropic 의 모든 공식 SDK 와 경쟁 랩 (OpenAI, Google, Cloudflare 등) 의 SDK 까지 같은 파이프라인에서 생성하던 회사다. The Information 보도 기준 인수액 $300M+. Anthropic 은 동시에 경쟁 랩이 쓰던 호스팅 제품들을 wind-down 한다고 명시했다 (Anthropic 블로그, TechCrunch).

5/19. Karpathy 본인이 트위터에 합류 발표. Nick Joseph 휘하 pre-training 팀에 소속. 역할은 "Claude 자체를 활용해 pre-training 을 가속하는 연구" (TechCrunch, CNBC).

Hacker News 반응도 규모에 맞았다. Stainless 스레드 503 점. 다음날 Karpathy 스레드 1,017 점.

표면만 보면 무관한 두 사건이다. 하나는 기업 인수, 하나는 인사. 묶어서 봐야 의미가 살아나는 이유는 두 사건이 같은 그림의 양 끝이기 때문이다.

Stainless 가 정확히 뭘 하는 회사인지

Stainless 는 OpenAPI 명세를 입력받아 TypeScript / Python / Go / Java 등 여러 언어로 SDK 를 자동 생성한다. 입력 하나, 출력 여러 개. 손으로 쓴 SDK 와 구분 안 갈 정도의 품질이라 각 회사들이 그대로 "공식 SDK" 로 출시했다. Anthropic, OpenAI, Cloudflare 가 모두 이 파이프라인을 썼다.

발표문에서 Anthropic 이 짚은 디테일 하나가 이 인수의 의도를 정확히 보여준다. Stainless 는 SDK 뿐 아니라 MCP 서버도 같은 파이프라인에서 생성한다 (Anthropic 블로그). 같은 명세에서 두 표면이 나온다. 개발자가 만지는 SDK 한쪽, 에이전트가 만지는 MCP 서버 한쪽.

Anthropic 의 Katelyn Lesse (Head of Platform Engineering) 인용이 결론이다. "에이전트는 연결할 수 있는 것만큼만 유용하다." 이게 베팅이다. SDK 품질이 곧 연결성. MCP 서버 품질이 곧 연결성. 둘 다 같은 파이프라인에서 나온다. 그 파이프라인을 내재화하면 Anthropic API 변경 → 동작하는 SDK / MCP 서버가 개발자 손에 도착하는 사이클이 짧아진다.

경쟁 랩 입장에서는 자사가 쓰던 호스팅 제품이 닫히는 거니까 실질적 손실이다. 솔로 개발자 입장에서는 자기가 이미 고른 라인의 표면이 빨라지는 거니까 실질적 이득이다. 같은 사건의 두 면.

Karpathy 는 정확히 뭘 가져오는지

여기서 한 가지 짚고 가야 한다. Karpathy 는 dev tools 팀이 아니라 pre-training 팀에 합류했다. 본인 발표문과 Axios / CNBC 보도 모두 명확하다. 그는 "LLM 의 다음 몇 년이 가장 형성적인 시기일 것이고, 다시 R&D 로 돌아가고 싶다" 고 말했다 (Axios).

이 글의 첫 초안에서는 Karpathy 가 dev tools / agent infra 쪽으로 합류한 줄 알고 그 각도로 썼다가 사실 확인 단계에서 수정했다. 솔직히 말하면, 두 사건을 한 묶음으로 읽으려는 욕심이 있을 때 가장 빠지기 쉬운 함정이다.

그럼 왜 두 사건을 같은 글에서 다루는가. 답은 단순하다. 에이전트 스택과 모델 스택은 따로 의미가 없다. 둘이 같이 굴러가야 플랫폼이다. Stainless 인수가 표면 (developer + agent surface) 에 대한 투자라면, Karpathy 영입은 그 표면 뒤의 코어 (model capability) 에 대한 투자다. 같은 주에 양쪽 끝을 동시에 미는 건 시장에 보내는 메시지다.

Anthropic 만 Stainless 를 샀다면 툴링 이야기로 끝난다. Anthropic 만 Karpathy 를 영입했다면 연구 이야기로 끝난다. 두 개가 30 시간 안에 동시에 떨어졌다는 것 자체가 회사의 우선순위 선언이다.

두 이야기가 사실 같은 신호인 이유

플랫폼이 안전한 베팅이 되려면 두 가지가 필요하다. 표면이 안정적이고 빠르다, 그리고 코어가 경쟁자보다 빠르게 개선된다. 둘 중 하나가 멈추면 빌더들이 떠난다.

  • 표면만 닦고 모델이 뒤처지면 "더 똑똑한 모델" 쪽으로 이탈한다.
  • 모델만 밀고 SDK 가 늦으면 "더 잘 만들어진 클라이언트" 쪽으로 이탈한다.

Anthropic 은 같은 주에 두 끝을 동시에 밀었다. 이게 이긴다는 보장은 아니다. 다른 모든 회사한테 보내는 "기준이 올라갔다" 는 신호다.

1 인 개발자 입장에서 실질적 질문은 "어느 랩이 최종 승자냐" 가 아니다. "이번 주에 어느 표면 위에 만들 것이냐" 다. 같은 주에 양쪽 끝을 동시에 미는 곳이 있다면, 그 표면이 방어 가능한 선택이라는 뜻이다.

솔로 개발자한테 실질적으로 뭐가 바뀌나

세 가지가 바뀐다.

첫째, 모델 릴리즈 후 SDK 까지의 시차가 줄어든다. Stainless 가 내부로 들어왔으니 Anthropic API 변경 → 작동하는 SDK 가 손에 잡히는 사이클이 짧아진다. 새 기능을 SDK 가 못 따라잡아 며칠 기다려본 사람은 이 말이 무슨 비용을 줄이는지 안다.

둘째, 에이전트 표면과 개발자 표면이 수렴한다. 같은 생성기에서 SDK 와 MCP 서버가 같이 나온다. 한쪽 표면용으로 만든 컨텍스트 엔지니어링 자산이 다른 쪽으로 이식되는 비용이 작아진다. 자기 서비스를 MCP 로 노출하는 스킬을 만들었다면, 같은 명세에서 Python SDK 예제까지 같은 레포에 들어간다. 다시 쓸 필요 없다.

셋째, 1 명이 출하 가능한 것의 천장이 올라간다. 핵심은 여기다. 지난 2 년의 줄거리는 "팀 규모 작업이 컨텍스트 파일 + 스킬 몇 개 + MCP 서버 1-2 개 가진 1 인 운영자에게 들어간다" 였다. 같은 주에 SDK 공장 인수 + frontier 연구자 영입은 이 방향이 계속된다는 회사의 선언이다.

구체적으로 내가 이번 주 운영 중인 것들을 깐다.

  • Windows PC 에서 텔레그램으로 호출하는 AI 에이전트 (파일 R/W + 웹 검색 + URL fetch + 셸 sandbox)
  • 4 시간 주기 자동 헬스체크 + 주 1 회 메모리 컨솔리데이션 도는 sniper 트레이딩 봇
  • 매일 아침 8 시 어제 활동 일지 자동 작성 → blog push → Telegram 보고
  • 4 시간 주기로 18 개 진행 프로젝트 정합성 검사 도는 self-validate cron

전부 Claude Max 구독 1 개 위에서 돈다. 팀 없었다. Stainless 인수는 다음 버전을 더 싸게 조립할 수 있게 한다. Karpathy 영입은 다음 버전이 더 똑똑하게 돌게 한다.

부차 효과 하나. SDK 와 MCP 서버가 같은 명세에서 같이 나오면, 1 인 개발자가 출하하는 단위가 바뀐다. Python 라이브러리 하나를 출하하던 사람이 같은 명세에서 Python 라이브러리 + 매칭되는 MCP 서버를 동시에 출하할 수 있다. 받는 쪽은 한 번 릴리즈로 두 표면을 얻는다. 예전엔 툴링 엔지니어 1 명 데려와야 가능했던 레버리지가, 이제 Stainless 파이프라인 위에서 거의 공짜다.

이번 주 손댈 4 가지

신호가 진짜라면 다음 질문은 "그래서 뭐 하냐" 다. 답은 같은 4 가지다. prompt caching 켠 공식 SDK 호출, Skill 1 개, MCP 서버 1 개, 레포 루트의 CLAUDE.md.

1. prompt caching 켠 공식 SDK 호출

Anthropic API 위에서 빌드하는 사람 대부분이 prompt caching 을 끄고 쓴다. 캐시된 프리픽스는 같은 토큰을 다시 보낼 때보다 약 90% 싸다. stable 한 system prompt 가 4-6K 토큰이라면, 첫 호출 이후 캐시 윈도우 안의 모든 재사용이 거의 공짜다. Stainless 인수로 이 표면은 계속 빨라질 거니까, 코드에 지금 박아둬야 한다.

from anthropic import Anthropic

client = Anthropic()

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": LARGE_STABLE_CONTEXT,  # 페르소나, 규칙, 스키마
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[
        {"role": "user", "content": user_query},
    ],
)

print(response.usage.cache_read_input_tokens)
print(response.usage.cache_creation_input_tokens)

마지막 두 usage 필드를 본다. 첫 호출은 캐시 write. 캐시 윈도우 안의 모든 후속 호출은 cache read. 일주일 트래픽 기준으로 보고 싶은 비율은 cache_read 가 많고 cache_creation 이 적은 쪽이다. 역전돼 있다면, stable 이라고 가정한 컨텍스트가 사실 안 stable 한 거다. 프리픽스에서 뭐가 매 호출마다 바뀌는지 봐야 한다.

2. Skill 1 개

Skill 은 Claude Code 안에서 재사용 가능한 에이전트 능력의 단위다. SKILL.md 한 장 + 필요한 스크립트 / 리소스로 구성된 디렉토리. SKILL.md 프론트매터는 "언제 이 스킬을 로드할지" 를, 본문은 "뭘 할지" 를 적는다.

---
name: invoice-extractor
description: PDF 인보이스에서 정형 데이터 추출 후 JSON Lines 출력. 사용자가 인보이스 파싱 / PDF 추출 / 라인 아이템 합계를 요청하면 트리거.
---

# Invoice Extractor

PDF 인보이스를 파싱한다.

## 언제 로드

사용자가 인보이스 파싱, PDF 추출, 또는 여러 인보이스 라인 아이템 합계를 언급할 때.

## 할 일

1. Read 도구로 각 PDF 를 읽는다.
2. vendor / invoice_date / line_items / subtotal / tax / total 추출.
3. 인보이스 1 건당 JSON 1 줄로 `extracted.jsonl` 에 출력.
4. 처리 건수 + 합계를 stdout 에 출력.

## 하지 말 것

원본에 없는 필드 만들어내지 않기. 날짜 정규화할 때 원본 문자열을 `source_date` 필드에 같이 담기.

레포에 들어가 있는 working skill 은 가장 싸게 출하 가능한 에이전트 인프라 조각이다. 머신 간 이식 가능. 팀원 간 공유 가능. 감사 가능. 그리고 Anthropic 이 에이전트 표면에서 가장 무게를 싣고 있는 단위가 정확히 이거다.

3. MCP 서버 1 개

MCP 는 Claude 에이전트가 내가 통제하는 툴에 닿게 해주는 프로토콜이다. Stainless 는 인수 전부터 OpenAPI 명세에서 MCP 서버를 자동 생성하고 있었다. 인수 이후 이 표면은 더 중심으로 들어온다.

Claude Code 의 최소 MCP 설정.

{
  "mcpServers": {
    "my-service": {
      "command": "node",
      "args": ["./mcp-servers/my-service/index.js"],
      "env": {
        "API_KEY": "${env:MY_SERVICE_API_KEY}"
      }
    }
  }
}

자체 MCP 서버를 굴리는 목적은 단순하다. 매일 쓰는 툴 표면이 모든 Claude 세션의 일급 능력이 된다. 프로젝트 상태 파일 읽어주는 read-only MCP 서버 1 개. 일지 항목을 블로그에 push 하는 write 허용 MCP 서버 1 개. 자기 메모 위에 검색 돌리는 MCP 서버 1 개. 각각 몇 시간 작업이고, 셋업 후 여는 모든 세션에서 회수된다.

4 가지의 그림

4 개가 따로 노는 게 아니라 같이 쓴다. 평문으로 그려보면.

+--------------------+        +---------------------+
| 내 IDE / 터미널    | -----> | Claude Code         |
+--------------------+        |  세션               |
                              |                     |
                              |  CLAUDE.md 읽음     |
                              |  Skills 로드        |
                              |  MCP 서버 호출      |
                              +---------+-----------+
                                        |
                          +-------------+-------------+
                          |                           |
              +-----------v---------+      +----------v-----------+
              | 내 MCP 서버         |      | Anthropic API        |
              | (내 툴들)           |      | (prompt caching ON)  |
              +---------------------+      +----------------------+

세션이 오케스트레이터. CLAUDE.md 는 상주 브리프. Skill 은 명명된 능력. MCP 서버는 사적 툴로 가는 게이트. prompt caching 켠 API 호출은 무거운 stable 컨텍스트를 싸게 재사용하는 채널. 조각 하나하나는 작다. 4 개가 모인 모양이 1 인에게 팀 표면적을 준다.

4. 레포 루트의 CLAUDE.md 1 장

지난 6 개월 동안 가장 레버리지 큰 한 가지 행동은 각 레포 루트에 CLAUDE.md 를 두고 진실로 유지하는 거였다.

세션 시작 시 Claude Code 가 이 파일을 읽는다. 내용은 프로젝트 사실, 페르소나, 규칙, 그리고 프로젝트 안의 다른 컨텍스트 파일들로의 포인터. 포맷은 그냥 마크다운. 비용은 한 번 쓰는 시간 + 프로젝트 바뀔 때 업데이트하는 디시플린.

agent-starter-kit 의 CLAUDE.md 한 단락 예시.

# CLAUDE.md

이 레포는 Telegram AI 에이전트 스타터 키트. Gemini function calling 기반.
5 개 툴: 파일 R / 파일 W / 웹 검색 / URL fetch / 셸 명령.
셸 명령은 `~/Desktop/agent-workspace/` 안으로 sandbox, `_safe_path` helper
경유. 이 sandbox 느슨하게 하지 말 것. 접근 통제는 `ALLOWED_USER_IDS` 가
유일하니까 새 툴은 맨 위에서 user_id 검사 필수.

세션 시작 시 `bot.py`, `requirements.txt`, `README.md` 를 먼저 읽는다.
README 는 사용자 셋업 가이드이자 지원 툴 목록의 source of truth.

툴 추가 요청 받으면 기존 패턴 따라가기: docstring 명확한 Python 함수,
`tools` 리스트 등록, 맨 위 allowlist 검사, path 인자에 `_safe_path` 검사.
새 의존성 추가는 `requirements.txt` 버전 핀 업데이트 없이 금지.

특별한 글쓰기가 아니다. "이 프로젝트가 뭐고, 규칙이 뭐고, 다음 세션이 뭘 해야 하는지" 를 명료하게 적은 한 단락이다. 레버리지는 단순하다. 이 레포의 모든 Claude 세션이 이 파일을 컨텍스트로 받고 시작한다. 20 분 글쓰기가 프로젝트 수명 내내 반복 설명 시간을 회수한다.

1 인 개발자 경제학에서 이게 어디에 떨어지는지

5/18 - 5/19 일주일을 가장 깨끗하게 읽는 방법은 압축 사건 이다.

SDK 엔지니어 + 연구 엔지니어 + 에이전트 인프라 엔지니어가 필요했던 작업이, 컨텍스트 파일 + 스킬 몇 개 + MCP 서버 1-2 개 가진 Claude Code 세션 1 개 표면 안에 들어간다. Stainless 인수가 표면을 더 빠르게. Karpathy 영입이 코어를 더 깊게. 둘이 같이 1 명이 출하할 수 있는 천장을 올린다.

이게 indie dev moment 다. 팀이 1 인으로 압축됐다. 그 1 인이 더 많은 일을 하는 게 아니다. 플랫폼이 예전에 팀이 하던 일의 더 많은 부분을 한다.

반대 논거를 솔직히 짚어두자.

플랫폼은 변한다. Anthropic 이 가격을 바꿀 수 있다. MCP 명세가 바뀔 수 있다. Skill 이 deprecate 될 수 있다. 다 실제 리스크다. 완화책은 의존하는 표면을 작고 이식 가능하게 유지하는 거다. SKILL.md 는 그냥 마크다운. 내가 굴리는 MCP 서버는 그냥 프로세스 1 개. CLAUDE.md 는 그냥 마크다운. 이미 쓰는 SDK 보다 더 강한 vendor lock-in 은 없다. 플랫폼이 바뀌어도 컨텍스트 이식 비용은 몇 달이 아니라 몇 시간이다.

또 하나의 반대 논거. Stainless 의 호스팅 제품이 경쟁 랩에 닫히는 건 생태계 전체로는 손실이다. 동의한다. 여러 랩을 동시에 다루는 툴을 만드는 사람한테는 공유 생성기 손실이 실제 비용이다. 1 차 랩을 이미 고른 솔로 개발자한테는 다른 이야기다. 라인을 골랐고, 그 라인의 표면이 더 빠르고 코어가 더 강해진 거다. 시장 수준의 비용과 개인 수준의 이득은 다른 축이다.

마지막. 같은 압축이 경쟁 플랫폼에서도 일어날까. 솔직한 답은 "그렇다, 시차 두고." OpenAI 도 assistants / tools 표면에 무겁게 투자해왔다. Google 도 자체 SDK 생성 툴링이 있다. Anthropic 의 이번 수는 두 곳 다에 가속 페달이다. 이식 가능한 표면 (스킬 파일, MCP 서버, 평문 마크다운 컨텍스트) 위에 짓는 솔로 개발자는 어느 플랫폼이 앞서가든 이득을 가져간다. 표면이 같은 원시 단위로 수렴할수록 이식 비용은 떨어지기 때문이다.

마무리

두 발표. 30 시간 간격. 따로 읽으면 인수 1 건 + 인사 1 건. 같이 읽으면 회사가 의도를 선언한 거다.

의도는 단순하다. 개발자와 에이전트가 만지는 표면, 그리고 그 표면 뒤의 코어. 같은 주에 가시적으로 양쪽 동시 투자.

솔로 개발자한테 질문은 단순하다. 이 표면 위에 이미 올라와 있는가. 아직이면 4 가지가 진입점이다. prompt caching 켠 SDK 호출 1 회, Skill 1 개, MCP 서버 1 개, CLAUDE.md 1 장. 나머지는 이터레이션이다.

이번 주에 같은 플레이를 돌릴 거다. 다음 글은 같은 작은 에이전트를 Anthropic 스택 vs forge 스타일 대안 위에 짓는 비교 + 비용 / 마찰 숫자. 따라오고 싶으면 아래 agent-starter-kit 과 컨텍스트 엔지니어링 자료가 내가 이터레이션 중인 아티팩트다.


관련 글


출처

Wildeconforce

매일 만들고, 매일 분석하고, 매일 기록합니다.
© 2026 wildeconforce · build-in-public

이 사이트는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.