Show HN: Supapool – 코딩 에이전트를 위한 Supabase
요약
Supapool은 코딩 에이전트가 실제 Supabase 환경을 격리된 상태로 테스트할 수 있도록 돕는 CLI 도구입니다. 이 도구는 임시 인스턴스를 빌려주고, 필요한 자격 증명을 주입하며, 작업 완료 후 자동으로 해제합니다. 이를 통해 프로덕션에 영향을 주지 않으면서 실제 데이터베이스 작업을 안전하게 수행할 수 있습니다.
핵심 포인트
- 실제 Supabase 환경을 사용해 테스트 가능 (Mock 아님)
- 임시 인스턴스를 빌려주고 종료 시 자동 해제
- 브랜칭의 느리고 비싼 단점을 해결함
- CLI 전용으로 에이전트 설계에 최적화됨
작동 방식
npx @supapool/cli run -- npm run dev
모든 명령어를 감싸줍니다. Supapool은 깨끗한 인스턴스를 임대하고, 자격 증명을 주입하며, 활성 상태를 유지하다가 명령어가 종료되면 해제합니다.
이유
실제 Supabase. Postgres, Auth, 그리고 S3 호환 스토리지입니다. 병렬 에이전트에게는 이것이 필요합니다. 에이전트들은 실행 도중에 서로의 데이터베이스를 지우지 않습니다. 모의(Mock)가 아닙니다. 프로덕션에 영향을 주지 않으면서 실제 격리된 Supabase 스택을 대상으로 마이그레이션 및 데이터베이스 작업을 테스트할 수 있습니다. 브랜칭은 느리고 비쌉니다. 브랜치는 생성하는 데 몇 분이 걸릴 수 있으며, 마치 프로덕션 인스턴스인 것처럼 청구됩니다. 근접 배치(Colocated). 인스턴스는 일시적이기 때문에 고정된 홈 리전에서 존재하는 대신 에이전트가 작업을 수행하는 곳 근처에서 시작합니다. CLI 전용. 대시보드가 없습니다. 계정, 사용량 및 비용은 CLI와 API를 통해 노출되며, 이는 에이전트의 인체공학적 설계에 맞춰져 있어 모든 것을 회사 시스템으로 바로 파이프할 수 있습니다. 베타 기간 동안 무료. [email protected]로 이메일을 보내면 수정 사항이나 해결하는 데 필요한 정보 요청에 대한 자동 응답을 즉시 받을 수 있습니다.
문서
명령어
CLI는 두 가지 명령어를 가지고 있습니다.
npx @supapool/cli login
npx @supapool/cli run -- <command>
login
GitHub 로그인 창을 열고 API 키를 ~/.config/supapool/config.json에 저장합니다.
. run
최초 사용 시 동일한 로그인을 수행하므로 대부분의 사람들은 직접 login을 실행하지 않습니다.
run
깨끗한 인스턴스를 획득하고, supabase/migrations에 있는 모든 .sql 파일을 파일 이름 순서대로 적용하며, 해당 인스턴스의 자격 증명을 환경 변수에 담아 명령어를 시작하고, 명령어가 활성 상태인 동안 임대 기간을 갱신하며, 종료될 때 인스턴스를 해제합니다. 사용자의 리포지토리 환경 파일은 절대 수정되지 않습니다.
주입되는 항목
감싸진 명령어는 표준 Supabase 변수들을 받습니다: SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, 그리고 DATABASE_URL
. 동일한 값들은 현재 publishable 및 secret 키 이름, Next.js, Vite, Astro, Svelte, Expo, Create React App, Gatsby, Nuxt가 사용하는 public 접두사, Prisma 및 Postgres URL 별칭, 그리고 표준 PG* 연결 변수에 미러링됩니다. Secret 키는 브라우저 공개 변수에 절대 할당되지 않습니다. SUPAPOOL_INSTANCE_ID는 리스를 식별합니다.
리스 (Leases)
모든 인스턴스는 기본적으로 30분의 TTL(Time To Live)을 가진 리스입니다. CLI는 명령이 실행되는 동안 5분마다 이를 갱신합니다. 명령이 종료되거나, 프로세스가 죽어 갱신이 중단되면, 리스가 만료되고 슬롯은 지워져 풀로 반환됩니다. 인스턴스에 저장하는 것은 무엇도 유지되지 않으므로, 모든 실행을 일회용으로 간주하세요.
CI (지속적 통합)
CI 작업에서는 브라우저 로그인이 건너뜁니다. 노트북에서 한 번 로그인한 후, ~/.config/supapool/config.json에서 키를 복사하여 CI 시크릿에 넣고, 이를 SUPAPOOL_API_KEY로 설정합니다.
SUPAPOOL_API_KEY=sp_live_... npx @supapool/cli run -- pnpm test
코드에서 사용하기
이 npm 패키지는 라이브러리 역할도 합니다. withInstance는 리스를 획득하고, 콜백이 실행되는 동안 이를 갱신하며, 심지어 콜백이 오류를 발생시킬 때에도 항상 해제합니다:
import { withInstance } from '@supapool/cli'
await withInstance(async (instance) => {
const { SUPABASE_URL, SUPABASE_ANON_KEY, DATABASE_URL } = instance.env
...
라이프사이클 기본 요소인 acquire, renew, release, 그리고 startRenewer는 자체 리스 경계를 관리하는 코드를 위해 내보내집니다. 전체 API는 패키지 README를 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기