플랫폼
c44cede의 Rust 크레이트·레지스트리·보안 문서를 따라가며 “무엇이 실제로 구현돼 있고, 무엇이 아직 연구 질문인지”를 구분합니다.Octopus는 “산출물(artifact)이 선언된 인터페이스를 건널 때마다 정책을 새로 계산하고 장부에 기록하는” 작은 Rust 커널 위에, 모델 제공자·도구·에이전트(worker)·작업 공간을 JSON 폴더로 붙이는 에이전트 운영체제입니다. 데스크톱 클라이언트(Electron)와 터미널 클라이언트(./octopus)가 같은 Home(~/.octopus)을 공유합니다. 저장소 라이선스는 MIT, 상태는 README가 직접 “research preview”라고 밝힙니다.
README의 표현으로 “self-evolving”은 에이전트가 목표·트리거·도구·작업자·컨텍스트 같은 미래 작업의 조건을 정책 안에서 바꿀 수 있다는 뜻입니다. 반면 “self-improvement”(실제로 더 좋아지는가)는 아직 연구 목표로 분리해 적어 두었습니다.
일반적인 에이전트는 “모델 호출 → 도구 실행 → 관찰”을 도는 하나의 프로그램에 메모리·스킬·스케줄을 덧붙여 갑니다. Octopus는 반대로 커널이 최소한만 알고, 나머지(모델, 채널, 도구, 에이전트 역할)는 설치되는 앱처럼 취급합니다.
이때 에이전트는 코드가 아니라 interface.json과 policy.json 두 파일로 된 ‘서술’입니다. 새 에이전트 역할 = 폴더 복사 + 목록 수정이라는 설계가 이 비유의 핵심입니다.
| 표면 | README의 설명 | 저장소에서 확인한 대응물 |
|---|---|---|
| Home | 시스템과의 하나의 연속 대화, 위젯 표시 | app/src React UI, registry/interface/system_worker_operator_home |
| Projects | 목표 + 고유 컨텍스트/권한 | registry/ee_template/project (allowed_child_ee_templates: ["project"]) |
| Agents | 모델·역할·접근 범위, JSON 두 개 | registry/interface/system_worker_* 폴더들 |
| Tasks | 에이전트에게 맡긴 작업, 나중에 이어받기 | system_worker_operator_task, 실행 기록(run record) |
| Terminal client | 같은 Home을 쓰는 CLI | 루트 octopus 셸 스크립트 → app/cli/index.cjs |
| Applications | 채널·MCP·다른 모델 제공자 | app/distribution/local-packages/packages/world_*.json |
| Drivers | 폴더·worktree·브라우저·데스크톱·컨테이너·원격 | registry/worker_environment_kind/* 12종 |
README의 NOTE는 현재 모델들이 스스로 주도권을 잡지 않으며, 일반 코딩 작업에서는 Codex CLI가 이미 주는 것 이상을 Octopus가 주지 않는다고 적습니다. 즉 이 프로젝트는 “지금 더 잘 되는 코딩 도구”가 아니라 아키텍처 가설을 시험하는 연구물로 읽어야 합니다. 또 OpenAI와 무관한 독립 소프트웨어이며 저장 형식은 프리뷰 빌드 사이에 바뀔 수 있다고 명시합니다.
GitHub API 확인 기준(2026-10-25) 저장소는 2026-10-09에 생성됐고 최근 push는 10-24입니다. 스타 118개·포크 10개로 규모는 아직 작지만, 생성 2주 만에 TrendShift 목록 18위에 올랐습니다. 순위 이유를 저장소가 설명해 주지는 않으므로 아래는 소스와 문서에서 확인되는 특징입니다.
docs/architecture.md는 에이전트 루프가 런타임 안의 메커니즘이 아니라 산출물의 흐름에서 따라 나오는 결과라고 설명합니다. 커널은 페이로드를 해석하지 않고("blind"), 어떤 제공자·채널·도구도 이름으로 알지 못합니다. AGENTS.md의 제1원칙도 “커널은 작고 눈이 멀었다”입니다.
권한은 저장된 목록이 아니라 worker 천장 ∩ EE 체인 ∩ run의 바인딩의 교집합으로 산출물이 도착할 때마다 형성됩니다. 모델이 run 기록에 뭘 써도 권리가 되지 않는다는 점이 보안 문서의 핵심 주장입니다.
| 축 | 전형적 에이전트 CLI/프레임워크 | Octopus(문서·소스 기준) |
|---|---|---|
| 에이전트의 정체 | 프로세스(루프 + 프롬프트 + 도구 목록) | JSON 서술(역할 + 접근 상한) |
| 권한 | 설정 파일/프롬프트 지시 | 도착 시점마다 결정적으로 재계산 + 방 안쪽 집행 |
| 기록 | 대화 로그/트레이스 | append-only 장부 ledger/movements.jsonl, 거부도 행으로 기록 |
| 완료 판정 | 모델의 “끝났다” 선언 | verifier 통과 후 런타임만 mark 기록 |
| 성숙도 | 다양 | 연구 프리뷰, macOS 14+ 한정, 형식 변경 가능 |
프롬프트 인젝션을 “막았다”고 주장하는 대신, 문서가 폭발 반경을 좁힐 뿐 위험을 없애지 않는다고 인정하고 계층(정책 vs 프로세스 샌드박스)을 나눠 설명합니다. 에이전트를 만드는 사람이 참고하기 좋은 태도입니다.
커밋 c44cede의 git ls-files 기준입니다. 줄 수는 확장자별 물리 줄이며 테스트·주석·생성물이 섞여 있어 “순수 코드량”이 아닙니다.
| 영역 | 기술 | 근거(경로) | 규모 |
|---|---|---|---|
| 커널 + 호스트 | Rust 2021 (rust-version 1.91), tokio, serde, blake3, ed25519-dalek, schemars, notify | Cargo.toml, crates/* 19개 | crates 아래 .rs 58,785줄 |
| 레지스트리 내 드라이버 | Rust 패키지(도구 실행기, 방 구현) | registry/interface/*/packages/*, registry/worker_environment_kind/*/packages/* | 전체 .rs 709,820줄(레지스트리 포함) |
| 데스크톱 클라이언트 | Electron, React/TSX, Vite, TypeScript, xterm.js, Shiki, Mediapipe(제스처) | app/package.json, app/src, app/electron | .tsx 71,219 · .ts 36,730 · .cjs 116,402줄 · .css 29,369줄 |
| 네이티브 조각 | Swift 58개 파일 | (확장자 집계) | 22,028줄 |
| 터미널 클라이언트 | Node.js 24 CommonJS | app/cli/*.cjs 9개, 루트 octopus 셸 래퍼 | — |
| 계약·데이터 | JSON Schema, JSON 서술자 828개 | schemas/, registry/, app/schemas | .json 169,119줄 |
| 샌드박스 | macOS sandbox-exec (deny-by-default) | docs/security-model.md | macOS 전용 |
| 테스트·CI | cargo nextest, Node test, 스냅샷 618개 | .config/nextest.toml, .github/workflows/quality.yml | 워크플로 3개(quality, release, doomsday) |
패키지 스크립트에서 볼 수 있는 흥미로운 점은 check:public-source, export:package, verify:publication처럼 공개 배포용 소스 검사와 패키지 내보내기가 별도 명령으로 분리돼 있다는 것입니다. 레지스트리 패키지를 “설치 가능한 단위”로 다루려는 설계 흔적입니다.
registry/
interface/ 86개 모델 제공자·채널·에이전트(system_worker_*)·방의 문(door)
worker_environment_kind/ 12개 filesystem_workspace, git_worktree, browser_session,
code_mode, container_session, desktop_session,
process_session, mcp_stdio_session, remote_exec_server ...
tool/ 192개 browser.click, coder.apply_patch, coder.exec ...
verifier/ 15개 build_success, ocr_text_contains, operator_approval ...
ee_template/ 9개 existence, operator_space, project, self_improvement ...
artifact/ 35개 역할·가이드·스킬 같은 선언된 컨텍스트
mark/ 14개 coder.build.ok 등
폴더 수는 각 디렉터리의 직속 하위 폴더를 센 값이며, 이후 커밋에서 늘어날 수 있습니다. 한 도구 서술자(browser.click/tool.json)에는 실행 바이너리, 읽기·쓰기·실행 권한 슬롯, 네트워크/로컬 IPC 허용 여부, 지원하는 방 종류, 인자 JSON Schema가 한꺼번에 선언돼 있습니다.
| 프리미티브 | 한 줄 정의(문서) | 어디서 볼 수 있나 |
|---|---|---|
| Interface | 산출물 in/out 타입 포트. 폴더 이름이 곧 ID | registry/interface/<id>/interface.json |
| Artifact | 경계를 건너는 데이터. 내용 해시로 고정 | docs/contracts/ARTIFACTS.md |
| Run / Checkpoint | 실행 기록. 체크포인트에서 대기·재개 | crates/octopus-runtime/src/run_record.rs |
| Worker | 에이전트의 서술(역할 + 접근 상한) | system_worker_*/policy.json |
| EE (실행 환경) | “왜, 무엇이 허용되나”. 중첩 시 안쪽이 더 좁음 | registry/ee_template/*, crates/octopus-ee |
| Worker environment (방) | “효과가 물리적으로 어디서 일어나나” | registry/worker_environment_kind/* |
| Policy | 저장하지 않고 도착마다 형성 | crates/octopus-policy/src/lib.rs |
| Mark | verifier를 통과한 뒤 런타임만 찍는 성공 표시 | registry/mark/*, crates/octopus-marks |
docs/architecture.md가 요약한 식은 아래와 같습니다.
grant = worker-interface ceiling ∩ the EE chain the run lives in ∩ the run's authored bindings
이 식이 코드에서 어떤 모양인지 crates/octopus-policy/src/lib.rs에서 확인할 수 있습니다. 집합형 권한은 CapSet::intersect(BTreeSet 교집합)로, 읽기/수정/생성/삭제 같은 산출물 권리는 ArtifactRights::intersect로 각 항목을 AND 합니다. 그리고 masked_by_verbs의 주석은 “바인딩이 더 넓게 적어도 천장이 허용하지 않은 권리는 제거된다 — 좁은 쪽이 이긴다, 넓히는 것은 불가능”이라고 적고 있습니다. 한 줄로 정리하면 권한은 합쳐질수록 줄어든다는 것이 이 정책 모델의 불변식입니다.
// crates/octopus-policy/src/lib.rs (발췌 — 주석은 요약)
pub fn intersect(&self, other: &Self) -> Self {
Self {
read: self.read && other.read,
change: self.change && other.change,
create: self.create && other.create,
delete: self.delete && other.delete,
}
}
정책 변수는 선언부(InterfacePolicyDeclaration)에서 reduce 방식을 정의하고, form_interface_policy가 worker 층과 EE 층을 받아 boundary(집행용)와 context(모델에게 보여줄 컨텍스트) 두 가지로 값을 만듭니다. POLICY.md가 말하는 “정책의 두 소비자 — 런타임/방은 집행 경계로, 모델은 컨텍스트로 소비”가 함수 반환 타입(FormedInterfacePolicy { boundary, context })에 그대로 대응됩니다.
출입증을 한 번 발급해 두는 방식이 아니라, 문을 지날 때마다 “직원 등급 ∩ 오늘 들어가는 층의 규칙 ∩ 방문 목적서”를 다시 계산해 통과 여부를 정하는 건물과 같습니다. 어제 허용됐다는 기록은 오늘의 권한이 아닙니다.
README의 시퀀스를 줄이면 이렇습니다: 사람이 Home에서 메시지 입력 → 채팅 인터페이스가 산출물을 커널에 전달 → 커널이 grant 형성·승인·기록 → 모델 제공자 인터페이스가 도구 호출 산출물을 돌려줌 → 작업 공간 방의 문(door)이 grant를 검사하고 도구 실행 → 결과 산출물 → 모델 응답 → 사람에게 렌더링. 커널은 아무것도 먼저 밀어넣지 않고(push 없음), 각 인터페이스가 자기 ‘움직임(movement)’을 읽는 살아있는 프로세스입니다.
crates/octopus-ledger/src/lib.rs에는 움직임 종류와 거부 사유가 열거형으로 정의돼 있습니다.
| 열거형 | 값 |
|---|---|
MovementKind | ArtifactMoved, MarkOutcomeAdmitted(MarkId), VerificationFailed, DeliveryRefused, InterfaceArrival, InterfaceOutbound |
RefusedReason | no_binding, policy, verification_failed, unknown_interface, unknown_run, stale_epoch, checkpoint_spent, settled, registry_unstable, malformed |
거부 사유가 열 가지로 타입화돼 있다는 점이 설계의 핵심입니다. 문서가 말하는 “거부도 장부의 한 행이며 조용한 누락(silent drop)은 없다”가 이 열거형으로 구현됩니다. verifier가 실패해도 ‘도착’과 ‘검증 실패’는 영속 행으로 남고, mark(성공 표시)만 찍히지 않습니다.
방은 종류(kind) + 문(door) 인터페이스 + 형성된 정책으로 구성됩니다. 예로 git_worktree의 서술자는 substrate_family: process_exec, 기능 filesystem, process_exec, git, 읽기 루트(repo_root, tool_cache_root, toolchain_root)와 쓰기 루트(git_common_root, worktree_root 등)를 선언합니다.
보안 문서는 두 겹의 독립 방어를 구분합니다. 정책은 “run이 무엇을 요청할 수 있는가”를 정하고, 프로세스 권한은 “프로세스가 물리적으로 무엇을 건드릴 수 있는가”를 정합니다. 기본 sandbox_mode: "enforced"에서는 도구·verifier·인터페이스 프로세스가 환경 변수를 비운 채 deny-by-default macOS sandbox-exec 안에서 시작합니다. 단, 서술자가 sandbox_mode: "disabled"를 고르면 그 프로세스는 OS 샌드박스 없이 돕니다. 문서도 “정책 허용을 물리적 격리와 같다고 보지 말라”고 명시합니다.
보안 문서는 신뢰할 수 없는 콘텐츠를 읽으면서 쓰기/실행 도구도 가진 run은 조종당할 수 있다고 적습니다. 완화책은 프로젝트별 최소 드라이버, 격리를 위한 git_worktree 방, 검증된 산출물을 요구하는 체크포인트이며, 위험을 없앤다고 주장하지 않습니다.
{
"id": "c1",
"run": "run_web",
"epoch": 0,
"interface_binding": { "interface": "world_provider_codex" },
"required_verified_artifacts": [
{
"mark": "ocr.text.contains",
"artifact_label": "screen.captured",
"verifier": "ocr_text_contains",
"params": { "expected_text": "OCTOPUS" }
}
]
}
(docs/contracts/VERIFIERS.md의 예시입니다.) 이 체크포인트는 screen.captured 산출물이 도착하고 OCR verifier가 “OCTOPUS” 문자열을 확인해야만 닫힙니다. 모델이 “화면을 확인했다”고 말하는 것은 mark가 되지 못하고, 검사를 통과한 산출물만 장부에 성공으로 남는다는 점이 이 구조의 핵심 계약입니다.
README.md → docs/architecture.md: 용어와 그림.docs/contracts/POLICY.md: 설계 목표(“동시 1,000개 EE에서도 각 worker가 자기 권한을 정확히 안다”)와 형성 원리.crates/octopus-policy/src/lib.rs (997줄): 교집합·마스킹 구현.crates/octopus-ledger/src/lib.rs: 움직임·거부 사유 타입.registry/interface/system_worker_coder/{interface,policy}.json: 에이전트가 ‘두 파일’이라는 말의 실물.interface.json은 "interface_type": "system", "role": "worker" 같은 몇 줄뿐이고, policy.json의 ceiling이 접근 상한을 담습니다. 이 저장소의 coder worker 상한은 인터페이스 37개, 도구 33개(coder.apply_patch, coder.write_file, coder.exec, coder.build 등), 방 종류 3개(filesystem_workspace, git_worktree, system_room)입니다. 새 역할을 만든다는 것은 이 폴더를 복사해 id와 목록을 고치는 일이며, 커널 코드를 바꾸지 않는다는 것이 AGENTS.md의 두 번째 원칙(“능력은 레지스트리에 산다”)입니다.
| 기술/주제 | 배울 것 | 확인할 위치 |
|---|---|---|
| 정책 모델링 | 권한을 목록이 아니라 ‘도착 시 계산되는 교집합’으로 만들면 무엇이 쉬워지는가(결정성, 재생 가능) | POLICY.md, octopus-policy |
| 이벤트 소싱 감각 | append-only 장부, 거부도 기록, 해시로 고정한 서술자 바이트 보존 | octopus-ledger*, POLICY.md “Replayability” |
| Rust 워크스페이스 설계 | 19개 크레이트로 책임을 쪼개고 레지스트리 패키지를 같은 workspace 멤버로 편입 | 루트 Cargo.toml |
| OS 샌드박스 연동 | 서술자가 선언한 슬롯·경로·명령만 허용하는 프로파일 생성 구조 | docs/security-model.md, registry/tool/*/tool.json |
| 데이터 주도 확장 | 인터페이스 추가 = 폴더 + interface.json (+ life.json로 프로세스 수명 선언). 비밀 값은 JSON에 넣지 않고 환경 변수 이름만 참조 | registry/interface/GUIDE.md |
| 검증 주도 완료 판정 | 모델의 선언 대신 verifier + mark로 ‘끝남’을 정의 | VERIFIERS.md, registry/verifier/* |
crates/ 아래 .rs 파일을 합치면 58,785줄입니다(테스트 파일명이 들어간 경로를 제외하면 51,144줄). 산정 범위가 달라 생긴 차이로 보이며, 정확한 ‘커널 범위’ 정의는 저장소에 없습니다.registry/의 폴더는 수백 개 수준이며, 위 표의 값은 이 커밋에서 센 값입니다.아래는 docs/getting-started.md와 README에 적힌 소스 빌드 조건입니다. 이 글은 설치·빌드를 실행하지 않고 소스를 읽어 작성했으므로, 실제 빌드 시간·메모리 사용량은 확인하지 못했습니다.
| 항목 | 요구 | 비고 |
|---|---|---|
| OS | macOS 14 이상, 체크아웃은 APFS 볼륨 | 샌드박스가 sandbox-exec에 의존. 다른 OS는 프리뷰 대상 아님 |
| 도구체인 | Xcode Command Line Tools (Clang, Swift, macOS SDK, /usr/bin/python3) | xcode-select --install |
| Node.js | 24 LTS + npm (Node 20은 네이티브 재빌드 불가) | 네이티브 헤더는 Node 24.15.0용을 별도로 내려받아 체크섬 검증 |
| Rust | stable, 최소 1.91 (Cargo.toml의 rust-version) | 워크스페이스 크레이트 + 레지스트리 패키지 모두 빌드 |
| CPU | Apple Silicon 권장 | 패키저가 실행 중인 Node의 아키텍처로 빌드. Intel은 “소스 경로는 있으나 테스트된 프리뷰 배포로 확립되지 않음” |
| 계정/네트워크 | 의존성 내려받기 + ChatGPT 계정(선택 모델 접근 권한) | 모델 이용 한도는 제공자 계정에 귀속 |
README는 “컴퓨터 위에서 도구를 가진 모델은 여전히 컴퓨터 위에서 도구를 가진 모델”이라며, 부여할 권한만 부여하라고 합니다. 데이터는 ~/.octopus에 저장되고 Codex 로그인 정보는 ~/.codex에 남습니다. 앱을 지워도 두 폴더는 남으므로 직접 삭제해야 합니다.
패키지된 앱은 이 머신용으로 ad-hoc 서명되며 공증(notarize)되지 않아 Gatekeeper 경고가 뜰 수 있다고 README가 밝힙니다. 처음에는 별도 Home(OCTOPUS_HOME으로 짧은 경로 지정)에서 시험하는 편이 안전합니다.
저장소를 클론한 뒤 두 정책 파일의 항목 수를 비교해 봅니다. 이 커밋에서 coder는 도구 33개를 가집니다. planner와 reviewer는 어떤 도구·방을 갖는지 직접 확인해 “역할 = 접근 상한”이 코드가 아니라 데이터임을 체험하세요.
git clone https://github.com/miuuyy/Octopus-SI-OS.git
cd Octopus-SI-OS
git checkout --detach c44cede5f5c884cdcaff17ac7a422a76f49fd8cc
python3 - <<'PY'
import json
for w in ("coder", "planner", "reviewer"):
c = json.load(open(f"registry/interface/system_worker_{w}/policy.json"))["ceiling"]
print(w, {k: len(v) for k, v in c.items() if isinstance(v, list)})
PY
RefusedReason의 각 값(stale_epoch, checkpoint_spent 등)이 어떤 상황에서 생기는지 crates/octopus-runtime/src/lib.rs(4,281줄)에서 grep으로 찾아 표로 정리합니다. 문서의 “거부도 행이다”를 코드로 확인하는 과제입니다.
system_worker_planner를 복사해 system_worker_notes라는 읽기 전용 에이전트를 종이 위에서 설계합니다. interface.json은 몇 줄뿐이므로 policy.json의 ceiling에서 도구와 방을 어디까지 줄일지 정하고, 줄인 근거를 POLICY.md의 “narrower wins” 원칙으로 설명해 보세요. 실제 레지스트리에 넣을 때는 별도 Home에서만 시도하고 스키마 검증이 통과하는지 확인합니다.
README의 순서대로 npm ci --prefix app 후 CLI를 빌드하고 빈 Home에서 setup을 열어 봅니다. 모델 응답까지 가려면 ChatGPT 로그인이 필요하므로, 설정 화면의 선택지(애플리케이션 팩, 워크스페이스 이름, 모델)를 확인하는 데까지만 해도 구조 파악에 충분합니다.
export OCTOPUS_HOME="$HOME/.octopus-preview" # 짧은 경로 권장(유닉스 소켓 경로 길이 제한)
npm ci --prefix app
npm --prefix app run build:cli
./octopus --home "$OCTOPUS_HOME"
(위 명령은 README/docs/cli.md에 적힌 절차이며 이 글에서 직접 실행해 검증하지는 않았습니다.)
registry/verifier/payload_json_valid와 build_success를 읽고, “결과 JSON의 특정 필드가 있고 diff가 N줄 이하”를 확인하는 verifier의 서술자·입력·verdict 모양을 설계해 보세요. docs/contracts/VERIFIERS.md가 요구하는 결정성(같은 입력 → 같은 판정)이 지켜지는지가 평가 기준입니다.
| 주차 | 주제 | 할 일 |
|---|---|---|
| 1주 | 개념 지도 | README → architecture.md → glossary.md. System/World, 8개 프리미티브를 자기 말로 다시 그리기 |
| 2주 | 정책과 장부 | POLICY.md → octopus-policy 코드 읽기 → octopus-ledger의 열거형 정리. 정책 교집합 개념은 집합 연산과 Rust BTreeSet 문서로 보강 |
| 3주 | 방과 샌드박스 | ENVIRONMENTS.md, security-model.md, 도구 서술자 3개 정독. macOS sandbox-exec/Seatbelt 개념 조사 |
| 4주 | 확장 표면 | EXTENSION_SURFACES.md, registry/interface/GUIDE.md의 life.json. 직접 만든 서술자 설계서를 작성하고 scenarios.md의 ‘카메라 추가’ 시나리오와 비교 |
클라이언트(TSX·CJS 약 22만 줄)부터 읽으면 길을 잃기 쉽습니다. 이 프로젝트의 중심은 crates/의 작은 커널과 docs/contracts/의 계약이라 문서 → 타입 정의 → 서술자 순으로 내려가는 편이 효율적입니다.
docs/glossary.md 정의를 한국어로 풀어 쓴 것입니다| 용어 | 의미 |
|---|---|
| System / World | 위치가 아니라 통제로 나눈 두 영역. 선언된 인터페이스에서만 만난다 |
| Interface | 산출물 in/out 포트. 제공자·채널·센서·방의 문·worker 모두 인터페이스 |
| Artifact | 경계를 건너는 데이터. 내용 해시로 고정된 매니페스트 |
| Run / Checkpoint | 실행 기록 / 산출물이 경계를 건너는 도착·출발 지점. run은 데이터이지 프로세스가 아니다 |
| Worker | 에이전트에 해당하는 서술. system_worker_* 폴더의 JSON 두 개 |
| EE (Execution Environment) | 목표와 정책으로 분류한 범위. 중첩되며 안쪽일수록 좁다. 루트 목표는 existence |
| Worker environment(방/room) | 도구 효과가 실제로 일어나는 장소. 종류 + 문 + 정책 |
| Door | 방의 입구 인터페이스. grant를 검사하고 도구를 실행 |
| Grant | 도착 시점에 천장 ∩ EE 체인 ∩ 바인딩으로 계산된 실제 권한 |
| Ceiling | worker가 어떤 경우에도 넘을 수 없는 접근 상한(policy.json) |
| Movement / Ledger | 경계 통과 기록 한 행 / append-only 장부(ledger/movements.jsonl) |
| Verifier / Mark | 산출물 검사기 / 검사 통과 뒤 런타임이 찍는 성공 표시. 모델은 mark를 만들 수 없다 |
| Self-evolution | 정책 하에서 에이전트가 목표·트리거·도구·작업자·컨텍스트를 바꿔 미래 작업 조건을 형성하는 것 |
| Home | Octopus 상태가 저장되는 디렉터리(기본 ~/.octopus, OCTOPUS_HOME으로 변경) |
외부 문서는 바뀔 수 있습니다. 이 글의 구조·수치 설명은 커밋 c44cede에 맞춘 것이며, 연구 프리뷰의 저장 형식은 이후 빌드에서 달라질 수 있습니다.
| 항목 | 내용 | 기준 |
|---|---|---|
| 저장소 | miuuyy/Octopus-SI-OS | GitHub |
| 스타 / 포크 | 118 / 10 | 2026-10-25 GitHub API |
| 주 언어 | Rust | GitHub 분류 |
| 생성일 / 최근 push | 2026-10-09 / 2026-10-24 | GitHub API |
| 분석 커밋 | c44cede (커밋 시각 2026-10-25 00:03 +0300) | 본문 설명의 기준점 |
| 릴리스 | 없음 (소스 빌드만) | 수집 시점 릴리스 목록 비어 있음 |
| 추적 파일 | 4,181개 | 해당 커밋의 파일 목록 |
| 라이선스 | MIT | LICENSE |
실행 검증 없음. 설치·빌드·테스트를 돌리지 않고 소스와 문서만 읽었습니다. 클라이언트 UI 동작, 음성·제스처, 모델 응답 품질은 확인하지 않았습니다.
README의 주장은 설계 의도. “스스로 진화”가 실제 성능 향상을 낳는지는 저장소 스스로 열린 질문으로 둡니다. 스타 수가 작은 신생 프로젝트이며 저장 형식이 바뀔 수 있습니다.
제공자 의존. Home을 쓰려면 ChatGPT 계정이 필요하고 첫 번째로 이식된 제공자는 Codex입니다. OpenAI와 제휴 관계가 아니라고 README가 밝힙니다.