surfpool CLI는 로컬 Surfnet을 시작하고, Runbook을 실행하며, 워크스페이스
매니페스트에서 Runbook을 나열하고, 셸 자동 완성을 생성하며, Surfpool MCP 서버를
시작합니다.
명령어
| 명령어 | 설명 |
|---|---|
surfpool start | 로컬 Surfnet 시작. 별칭: surfpool simnet |
surfpool run | Runbook 실행 |
surfpool ls | 현재 워크스페이스의 Runbook 목록 표시 |
surfpool completions | 셸 자동 완성 스크립트 생성 |
surfpool mcp | Surfpool MCP 서버 시작 |
surfpool start
로컬 Surfnet을 시작합니다. Solana 프로그램 디렉토리에서 실행하면 Surfpool이 프로그램을 배포하는 Runbook을 자동으로 생성하고 실행할 수 있습니다.
surfpool start [OPTIONS]
네트워크 및 포트
| 플래그 | 단축 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
--port <PORT> | -p | integer | 8899 | JSON-RPC 서버를 바인딩할 포트. |
--ws-port <PORT> | -w | integer | 8900 | WebSocket 서버를 바인딩할 포트. |
--host <HOST> | -o | string | 127.0.0.1 | RPC, WebSocket 및 Studio 서비스를 바인딩할 호스트. |
--rpc-url <RPC_URL> | -u | string | none | 이 데이터소스 RPC URL에서 포크. --network와 충돌. SURFPOOL_DATASOURCE_RPC_URL 환경 변수로도 설정 가능. |
--network <NETWORK> | -n | enum | none | 사전 정의된 Solana 네트워크에서 포크. 값: mainnet, devnet, testnet. --rpc-url와 충돌. |
--offline | none | boolean | false | 원격 RPC 데이터소스 없이 실행. |
프로젝트 및 배포
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--manifest-file-path <MANIFEST_PATH> | -m | path | ./txtx.yml | 런북 매니페스트 경로. |
--no-deploy | none | boolean | false | 프로그램 자동 배포 비활성화. |
--runbook <RUNBOOK> | -r | string[] | deployment | 시작 후 실행할 런북 ID. 반복 사용 가능. |
--runbook-input <INPUT_PATH> | -i | path[] | none | 런북 실행에 제공할 입력 파일. 반복 사용 가능. |
--yes | -y | boolean | false | 런북 생성 프롬프트 건너뛰기. |
--watch | none | boolean | false | 프로그램 아티팩트 변경 시 재배포. |
--artifacts-path <ARTIFACTS_PATH> | none | path | none | .so 프로그램 아티팩트가 포함된 디렉터리. 생략 시 target/deploy 기본값 사용. |
--legacy-anchor-compatibility | none | boolean | false | 레거시 Anchor 테스트 스위트에 적합한 기본값 사용. |
--anchor-test-config-path <TEST_TOML> | none | path[] | none | 검사할 Anchor Test.toml 파일. 반복 사용 가능. |
계정 및 상태
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--airdrop <PUBKEY> | -a | pubkey[] | none | 시작 시 SOL을 에어드롭할 pubkey. 반복 사용 가능. |
--airdrop-keypair-path <KEYPAIR_PATH> | -k | path[] | ~/.config/solana/id.json | 에어드롭을 받을 pubkey의 keypair 경로. 반복 사용 가능. |
--airdrop-amount <LAMPORTS> | -q | integer | 10000000000000 | 시작 시 각 계정에 에어드롭할 lamport 수. |
--snapshot <SNAPSHOT_PATH> | none | path[] | none | 사전 로드할 JSON 계정 스냅샷. 반복 사용 가능. 중복 키의 경우 나중에 지정된 파일이 우선 적용됨. |
--db <DB_URL> | none | string | none | 영구적인 Surfnet 상태를 위한 데이터베이스 연결 URL. 인메모리 SQLite는 :memory:, 디스크 기반 SQLite는 .sqlite 파일, postgres 기능으로 빌드 시 PostgreSQL URL 사용. |
--surfnet-id <SURFNET_ID> | none | string | default | 이 Surfnet 인스턴스의 스토리지 네임스페이스. |
런타임 및 UI
| 플래그 | 축약 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
--no-tui | none | boolean | false | 터미널 UI를 실행하는 대신 로그를 출력합니다. |
--no-studio | none | boolean | false | Surfpool Studio를 비활성화합니다. |
--studio-port <PORT> | -s | integer | 18488 | Studio를 이 포트에 바인딩합니다. |
--daemon | none | boolean | false | Surfpool을 백그라운드 프로세스로 실행합니다. 데몬 모드는 Linux 전용입니다. |
--ci | none | boolean | false | CI에 적합한 설정을 사용합니다. TUI, Studio, 명령어 프로파일링 및 로그 출력이 비활성화됩니다. |
SVM 동작
| 플래그 | 축약 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
--slot-time <MILLISECONDS> | -t | integer | 400 | slot 시간(밀리초). |
--block-production-mode <MODE> | -b | enum | clock | 블록 생성 모드. |
--feature <FEATURE_PUBKEY> | -f | pubkey[] | none | pubkey로 SVM 기능을 활성화합니다. 반복 사용 가능. 기능 이름은 더 이상 사용되지 않지만 이전에 지원된 이름에 한해 여전히 허용됩니다. |
--disable-feature <FEATURE_PUBKEY> | none | pubkey[] | none | pubkey로 SVM 기능을 비활성화합니다. 반복 사용 가능. 기능 이름은 더 이상 사용되지 않지만 이전에 지원된 이름에 한해 여전히 허용됩니다. |
--features-all | none | boolean | false | agave-feature-set의 모든 SVM 기능을 활성화합니다. |
--skip-signature-verification | none | boolean | false | 트랜잭션 서명 검증을 건너뜁니다. |
--skip-blockhash-check | none | boolean | false | 트랜잭션 블록해시 유효성 검사를 건너뜁니다. |
관찰 가능성 및 성능
| 플래그 | 단축 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--geyser-plugin-config <PLUGIN_CONFIG_PATH> | -g | path[] | none | 로드할 Geyser 플러그인 설정 파일. 반복 가능. |
--disable-instruction-profiling | none | boolean | false | 명령어 프로파일링 비활성화. |
--max-profiles <COUNT> | -c | integer | 200 | 메모리에 유지할 트랜잭션 프로필 수. 값이 높을수록 메모리 사용량이 증가합니다. |
--log-bytes-limit <BYTES> | none | integer | 10000 | 각 트랜잭션 로그에 저장할 최대 바이트 수. 무제한 로그를 원하면 0로 설정하세요. |
--log-level <LEVEL> | -l | enum | info | Simnet 로그 레벨. 값: trace, debug, info, warn, error, none. |
--log-path <LOG_DIR> | none | path | .surfpool/logs | Simnet 로그 디렉터리. |
--metrics-enabled | none | boolean | env: SURFPOOL_METRICS_ENABLED | Prometheus 메트릭 엔드포인트 활성화. Surfpool이 prometheus 기능으로 빌드된 경우 사용 가능. |
--metrics-addr <METRICS_ADDR> | none | string | 127.0.0.1:9000 | Prometheus 메트릭 엔드포인트 주소. SURFPOOL_METRICS_ADDR로도 설정 가능. Surfpool이 prometheus 기능으로 빌드된 경우 사용 가능. |
더 이상 사용되지 않는 호환성
| 플래그 | 단축 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--subgraph-db <SUBGRAPH_DB> | -d | string | :memory: | 더 이상 사용되지 않으며 surfpool start --help에서 숨겨져 있습니다. 기존 스크립트는 호환성을 위해 계속 전달할 수 있습니다. |
예시
기본 설정으로 시작:
surfpool start
Devnet 포크:
surfpool start --network devnet
사용자 지정 데이터소스 RPC URL 사용:
surfpool start --rpc-url https://api.mainnet-beta.solana.com
TUI를 실행하는 대신 로그를 출력합니다:
surfpool start --no-tui
원격 RPC 데이터 소스 없이 시작합니다:
surfpool start --offline
여러 계정에 SOL 에어드롭:
surfpool start --airdrop <PUBKEY> --airdrop <PUBKEY>
스냅샷에서 계정 상태 로드:
surfpool start --snapshot ./snapshot1.json --snapshot ./snapshot2.json
target/deploy 변경 시 프로그램 재배포:
surfpool start --watch
온디스크 SQLite 데이터베이스에 Surfnet 상태 저장:
surfpool start --db ./surfnet.sqlite --surfnet-id local-dev
surfpool run
Runbook을 실행합니다. .tx 파일을 직접 실행하거나 txtx.yml 매니페스트에
선언된 Runbook을 참조할 수 있습니다.
surfpool run [OPTIONS] <RUNBOOK>
인수
| 인수 | 타입 | 설명 |
|---|---|---|
<RUNBOOK> | string | txtx.yml의 Runbook ID 또는 .tx 파일 경로. |
프로젝트
| 플래그 | 단축 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
--manifest-file-path <MANIFEST_PATH> | -m | path | ./txtx.yml | Runbook 매니페스트 경로. |
--env <ENVIRONMENT> | none | string | none | 사용할 txtx.yml의 환경. |
실행 모드
이 플래그들은 상호 배타적입니다. 지정하지 않으면 Surfpool은 브라우저 감독 모드를 사용합니다.
| 플래그 | 단축 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
--unsupervised | -u | boolean | false | 슈퍼바이저 UI 없이 실행. |
--browser | -b | boolean | 기본 모드 | 브라우저 UI에서 감독하며 실행. |
--terminal | -t | boolean | false | 터미널 콘솔에서 감독하며 실행. |
입력 및 출력
| 플래그 | 약어 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--output-json [<OUTPUT_DIR>] | 없음 | 선택적 경로 | 없음 | Runbook 출력을 JSON으로 출력하거나 저장합니다. 디렉터리를 지정하면 해당 디렉터리의 파일에 출력이 저장됩니다. |
--output <OUTPUT_NAME> | 없음 | 문자열 | 없음 | 실행 종료 시 지정한 이름의 출력 하나를 출력합니다. --output-json와 충돌합니다. |
--input <INPUT_PATH> | 없음 | path[] | 없음 | 일괄 처리에 사용할 입력 파일입니다. 반복 사용 가능합니다. |
실행
| 플래그 | 약어 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--explain | 없음 | 부울 | false | Runbook의 실행 방식을 설명합니다. |
--force | -f | 부울 | false | 캐시된 실행 상태를 무시합니다. |
슈퍼바이저 UI
이 플래그들은 Surfpool이 supervisor_ui 기능과 함께 빌드된 경우에 사용할 수
있습니다.
| 플래그 | 약어 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--port <PORT> | -p | 정수 | 8488 | Web UI 포트. |
--ip <IP_ADDRESS> | -i | 문자열 | 127.0.0.1 | Web UI IP 주소. |
로깅
| 플래그 | 약어 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--log-level <LEVEL> | -l | 열거형 | info | Runbook 실행 로그 레벨. 값: trace, debug, info, warn, error. |
--log-path <LOG_DIR> | 없음 | 경로 | .surfpool/logs | Runbook 실행 로그 디렉터리. |
예제
브라우저 감독 하에 매니페스트 Runbook을 실행합니다:
surfpool run deployment
감독 없이 실행하고 JSON 출력을 저장합니다:
surfpool run deployment --unsupervised --output-json .surfpool/runbook-outputs
.tx 파일을 직접 실행합니다:
surfpool run ./runbooks/deployment.tx
surfpool ls
워크스페이스 매니페스트에 선언된 모든 Runbook을 나열합니다.
surfpool ls [OPTIONS]
| 플래그 | 단축 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
--manifest-file-path <MANIFEST_PATH> | -m | path | ./txtx.yml | Runbook 매니페스트 경로. |
surfpool completions
셸 자동 완성 스크립트를 생성합니다.
surfpool completions <SHELL>
| 인수 | 유형 | 설명 |
|---|---|---|
<SHELL> | enum | 자동 완성을 생성할 셸. 값: bash, elvish, fish, powershell, zsh. |
surfpool mcp
AI 도구 통합을 위한 Surfpool MCP 서버를 시작합니다.
surfpool mcp
Is this page helpful?