시작

SDK 설치

@werft-ai/sdk를 설치하고, 서버 주소와 API key로 클라이언트를 만든다

Werft는 TypeScript SDK @werft-ai/sdk로 쓴다. SDK는 이미 떠 있는 Werft 서버에 API key로 붙는다. 이 페이지에서 SDK를 설치하고, 서버 주소와 key로 클라이언트를 만들고, 연결을 확인한다.

필요한 것

항목설명
서버 주소Werft 서버의 URL. 예: https://werft.example.com. 개발용 서버는 http://127.0.0.1:3000이다
API keycsp_로 시작하는 key. 세션을 만들려면 sessions:read, sessions:write가, 권한 요청에 답하고 세션을 닫으려면 sessions:approve, sessions:control도 필요하다
Node 20.3 이상 또는 BunSDK가 도는 런타임

서버가 없으면 서버 실행하기에서 개발용 서버를 띄우고 API key를 받는다. 운영 중인 서버라면 웹 콘솔에서 key를 발급한다(API key).

설치

앱 디렉터리를 만들고 npm에서 @werft-ai/sdk를 설치한다.

mkdir my-werft-app && cd my-werft-app
npm init -y
npm pkg set type=module
npm install @werft-ai/sdk

이 명령은 릴리스를 설치한다(dist-tag latest). main push의 프리릴리스 자동 게시는 중단했다. 기존 main dist-tag는 갱신되지 않으므로 릴리스 버전을 사용한다.

SDK 패키지는 Apache License 2.0이다. 서버와 저장소의 나머지는 PolyForm Small Business License 1.0.0을 따르는 source-available 코드다.

클라이언트 만들기

Werft를 만들 때 서버 주소(baseUrl)와 API key(apiKey)를 넘긴다. 서버 주소에 기본값은 없다. key는 코드에 적지 말고 환경 변수에서 읽는다.

werft.ts
import { Werft } from "@werft-ai/sdk";

export const werft = new Werft({
  baseUrl: "http://127.0.0.1:3000",
  apiKey: process.env.WERFT_API_KEY,
});
  • baseUrl은 서버의 주소다. /v1은 붙이지 않는다.
  • 옵션을 빼면 WERFT_BASE_URL, WERFT_API_KEY 환경 변수를 읽는다. 둘 중 하나라도 없으면 new Werft()가 TypeError를 던진다.
  • loopback이 아닌 주소에 http://를 쓰면 key가 평문으로 지나가므로 거절한다. 원격 서버에는 https://로 붙는다.
  • 브라우저에서는 만들 수 없다. 페이지에 key를 두면 새기 때문이다.

재시도, timeout, 오류 종류 같은 나머지 옵션은 클라이언트 설정과 오류에 있다.

연결 확인

key의 주인과 scope, 서버에 등록된 프로필을 읽는다.

check.ts
import { werft } from "./werft.ts";

const me = await werft.auth.me();
console.log(me.principal.kind, me.scopes);

const { items } = await werft.profiles.list();
for (const profile of items) console.log(profile.id, profile.repository_mode);
WERFT_API_KEY=csp_… node check.ts
api_key [
  'sessions:read',
  'sessions:write',
  'sessions:approve',
  'sessions:control',
  'sessions:recover'
]
claude-coding-auto required
claude-coding-local required
general none

Node 22.18 이상과 Bun은 .ts 파일을 바로 돌린다. 그보다 낮은 Node에서는 npx tsx check.ts로 돌린다. key가 틀리면 APIError(401)가, 서버에 닿지 않으면 ConnectionError가 난다.

HTTP API로 부를 때

SDK 없이 부를 때는 모든 요청에 Authorization: Bearer <key> 헤더를 붙인다. 문서의 curl 예제는 서버 주소를 API, key를 KEY 셸 변수에 둔다.

curl -sS -w '\n' "$API/v1" -H "Authorization: Bearer $KEY"

엔드포인트는 HTTP API 레퍼런스에 있다.

다음 단계

이 페이지