gakonst/nanocodex
Building blocks for frontier OpenAI agents in Rust. Nanocodex empowers you with Codex-level performance anywhere.
Nanocodex – OpenAI 기반 코드 어시스턴트를 위한 라이브러리 우선 SDK
무엇인가요 – Nanocodex는 헤드리스 Rust 라이브러리이며, JavaScript/Node, 브라우저, Python용 바인딩을 제공합니다. gpt-5.6-sol 시리즈를 위한 OpenAI Responses 상호작용 루프를 완전히 구현합니다. 애플리케이션에서 다시 구현할 필요 없이, 프롬프트 순서, 도구 호출, 코드 실행, 하위 프로세스 정리, 스냅샷, 분기 등 라이브러리가 전체 라이프사이클을 관리하는 임베디드 코드 어시스턴트를 제공합니다.
왜 중요한가요 – 대규모 언어 모델 기반의 신뢰할 수 있는 "코드 어시스턴트"를 구축하려면 일반적으로 다음과 같은 요소들을 조합해야 합니다:
- 프롬프트 순서 큐
- 모델에 대한 지속적인 WebSocket 연결
- 재시도/압축 로직
- 도구 실행 사전 환경
- 세션 기록, 스냅샷, 하위 프로세스의 정리된 종료
Nanocodex는 이 모든 것을 한 번만 구현하고, 매우 작고 타입 안정적인 API를 제공합니다. 사용자는 오케스트레이션 런타임을 다시 구현하는 대신, 제품 UI, 지속성, 또는 사용자 정의 도구에 집중할 수 있습니다.
핵심 기능
| 기능 | 제공되는 기능 |
|---|---|
| 타입 안정적인 턴 처리 | prompt()는 Turn 미래를 반환하며, 턴은 타입화된 이벤트 스트림(예: 도구 호출, 사용 통계)도 선택적으로 제공합니다. |
| 보존된 세션 기록 | 어시스턴트는 완료된 응답의 권위 있는 FIFO 기록을 유지하며, 새로운 프롬프트는 차이만 전달됩니다. |
| 내장 도구 생태계 | 워크스페이스 도구(파일 작업, 쉘 실행, 패치 적용, 이미지 보기), 웹 검색, 이미지 생성, 그리고 코드 모드 JavaScript 사전 환경(모델이 임의의 JS를 실행하고 await tools.<name>(...)로 도구를 호출할 수 있음). |
| 분기 및 스냅샷 | spawn(), fork(), fork_from()를 통해 전체 프로세스 상태를 복사하지 않고도 새 어시스턴트를 생성하거나 체크포인트에서 재개할 수 있습니다. |
| 내구성 레이어(옵션) | SQLite/Postgres 백엔드를 사용하는 추가 전용 저널; 재생, 중복 제거, 충돌 안전 복구를 제공합니다. |
| 서브 어시스턴트 | 가벼운 작업 트리 레지스트리로, 코드 모드에서 사용 가능한 오케스트레이션 프리미티브(spawn, wait, interrupt)를 제공합니다. |
| 다중 호스트 지원 | 동일한 Rust 코어가 네이티브, WASM 워커(브라우저), PyO3(파이썬)에서 실행됩니다. JavaScript 바인딩은 Node 또는 브라우저용 Agent, Transport, Subagents를 공개합니다. |
| OpenAI 전용 | gpt-5.6-sol 시리즈(기본값 sol, terra, luna도 지원)를 직접 지원합니다. 일반 프로바이더 추상화 없음 – 라이브러리가 Responses WebSocket 동작을 완전히 소유합니다. |
언어 및 진입점
| 언어 | 패키지 / 크레이트 | 일반적인 진입점 |
|---|---|---|
| Rust | nanocodex (크레이트) |
Nanocodex::builder(OpenAi::new(...)).build()? |
| JavaScript / Node | nanocodex npm 패키지 |
import { Agent, Transport } from "nanocodex/node" |
| 브라우저 / WASM | 동일한 npm 패키지 (nanocodex/browser) |
Agent.create({ transport: Transport.hostManaged(...), ... }) |
| Python | PyO3 웨일 (nanocodex PyPI) |
Nanocodex(api_key, instructions=...) |
일반적인 사용 패턴 (Rust 예제)
let openai = OpenAi::new(std::env::var("OPENAI_API_KEY")?)?;
let (agent, _events) = Nanocodex::builder(openai)
.instructions("You are a Rust coding agent.")
.workspace(std::env::current_dir()?)
.build()?
let turn = agent.prompt("Fix the failing parser test.").await?;
let result = turn.await?; // typed TurnResult
println!("{}", result.final_message());
agent.shutdown().await?;
동일한 흐름은 JavaScript(turn.result()) 및 Python(agent.prompt(...).result())에서도 사용 가능합니다.
Nanocodex를 사용할 때
- 제품 팀 – IDE 확장, CI 봇, 저코드 플랫폼을 구축하며, OpenAI 대화 루프를 다시 구현하지 않고도 신뢰할 수 있는 "코드 수정" 또는 "코드 생성" 어시스턴트가 필요할 때.
- 연구 프로토타입 – 사용자 정의 도구, 분기, 내구성 있는 체크포인트를 실험하면서도 핵심 어시스턴트는 안정적으로 유지하고 싶을 때.
- 풀스택 애플리케이션 – 동일한 어시스턴트가 서버(Rust/Node)와 브라우저(WASM)에서 실행되어 사용자에게 페이지 내 코드 작업 공간을 제공할 때.
- 음성 기반 어시스턴트 – 라이브러리는 이미 음성 클라이언트를 제공하며, 자체 오디오 파이프라인을 연결해도 동일한 세션 관리 이점을 누릴 수 있습니다.
설치 빠른 시작
# Rust
cargo add nanocodex
# Node (>=22.13)
npm install nanocodex
# Python (소스 체크아웃에서)
uv venv --python 3.11 py/bindings/.venv
uv pip install -r py/bindings/requirements.txt maturin
py/bindings/.venv/bin/maturin develop --manifest-path py/bindings/Cargo.toml
또는 README에 표시된 원라인 명령어로 macOS 또는 Linux용 사전 빌드된 CLI/TUI 바이너리를 다운로드할 수 있습니다.
성숙도 및 상태
- Crates.io 버전은 공개되었으며, Linux/macOS에서 CI 테스트 완료.
- 핵심 어시스턴트, 내구성 레이어, 도구 크레이트는 안정적; 브라우저 전용 및 실험적 VM 크레이트는 비공개/실험적 상태.
- 문서는 docs.rs 및 각 크레이트의 리포지토리 내
README에서 확인 가능. - 최소 예제, 라이프사이클, 분기, 서브어시스턴트, 브라우저, React, Vercel 워크플로우 등 참조 구현용 예제 세트 제공.
TL;DR
Nanocodex는 단일, 타입 안정적, Rust 소유의 SDK를 제공하여 OpenAI 코드 어시스턴트의 전체 라이프사이클(프롬프트 순서, 도구 실행, 분기, 스냅샷, 정리)을 처리합니다. JavaScript/Node, 브라우저, Python용 얇은 바인딩을 공개하여, 개발자가 오케스트레이션 연결 코드를 직접 작성하지 않고도 완전 기능의 코드 어시스턴트를 어떤 제품에도 임베딩할 수 있도록 합니다.
관련
- 프로젝트
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트