neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
Octopus는 개인 에이전트 플랫폼입니다
Octopus is a personal agent platform
개발 도구Python · TypeScriptGitHub @archeryue직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Octopus is a personal agent platform. It turns Claude Code and Codex
into durable, always-on AI agents that run on your own machine and work for you
around the clock — reachable from your phone or any browser.README 전문 보기 ↗Octopus is a personal agent platform. It turns Claude Code and Codex into durable, always-on AI agents that run on your own machine and work for you around the clock — reachable from your phone or any browser.
One install can serve more than one person. Each account is a completely separate Octopus — its own agents, sessions, applications, credentials, memory, and a workspace it cannot see out of — so a household or a few trusted people share the machine without sharing anything else. Signup is invite-only, and the first account (created with the install's own token) is the admin who mints the invites. It stays a personal product either way: there is no cross-account collaboration, no shared team space — just several private ones side by side.
Each agent keeps its own persistent setup (prompt, model, tools, schedules,
connectors), keeps work running in the background across turns, and can reach
real third-party APIs. Octopus drives the claude / codex CLIs directly via
their stream protocols, so there's no extra API cost — it uses your existing
Claude and ChatGPT subscriptions (or an API key you attach).
Phone / Browser
→ REST + WebSocket → FastAPI (web UI + API on one port)
→ Agent (durable: prompt · model · credential · tool policy · connectors)
→ backend: Claude Code or Codex (local CLI subprocess, stream-json)
→ MCP tools: bg · ask · ask_agent · schedule · research · connectors
(served in-process at /mcp/<name>, not spawned per session)
claude login / codex login) when none is attached.user_id, so one account never sees another's data, and each
account's secrets are encrypted under a per-user key so even the database
can't cross the line. A session's working directory is confined to the
account's own workspace (a relative path means "inside my workspace"; admins
can grant extra roots), and each account gets its own concurrency quota.
Admin surface: invites, disable/enable people, operator-only Monitor. Before
the first account exists the install runs on its install token; creating
that first account adopts whatever is already there.
Design: docs/plans/multi-tenancy.md.octopus serve --tunnel gives
instant public HTTPS via Cloudflare Tunnel. Session-bearer auth that a browser
or phone remembers for 30 days; HTTPS/WSS behind tunnels and reverse proxies.claude-code agent can delegate to a codex agent), and her
reply lands back in the caller's session as a follow-up turn. The
model:
mcp__ask_agent__ask, gets a delegation_id immediately, ends its
turn; the reply ([agent-reply:Vera …]) arrives as a new turn when
Vera finishes. Multiple delegations in flight at once give you
parallel fan-out for free.ask again with a
prior delegation_id continues that child session, so the delegated
agent keeps her own transcript for review rounds instead of starting
cold.docs/plans/agent-collaboration.md./showme <reference> opens a file from the
session's working directory in a browser modal — markdown rendered,
images/PDFs inline, code highlighted. Exact paths short-circuit (no
model call); fuzzy references like the readme are resolved by a
one-shot model call that reads recent conversation. Browser-only by
design — the agent never opens files on its own, since it can't tell
whether anyone is at the screen.POST /api/sessions/{id}/reset escape hatch); mid-turn
interrupt (Esc) + message queue; virtualized, lazy-loaded chat that stays
light on thousand-message sessions./rewind — rewind a conversation to any prior user message and
re-issue it (edited, redone, or replaced). A sidebar tree shows branches; a
confirm popover discloses side effects (file edits, bg tasks, irreversible
tool calls) and optionally reverts file edits via git stash when the
working tree is clean. Design:
docs/plans/session-rewind.md./fork [name] — duplicate the current session onto an independent
full copy of its working directory, leaving the original untouched. The fork
resumes the real conversation history (native transcript copy), so the model
sees full context. Design:
docs/plans/session-fork.md./research <question> (or the
mcp__research__deep_research MCP tool, which agents can call themselves)
starts a multi-phase Octopus-orchestrated research job: scope decompose →
parallel web-search sub-turns per angle → dedup + rank → adversarial verify →
final synthesis into a cited report. Octopus owns the fan-out,
concurrency limits, cancellation, and persistence; web access comes from the
harness's own native tools (WebSearch/WebFetch for Claude; web_search for
Codex). A ResearchCard in the chat tracks phase progress and exposes a cancel
button; the final report arrives as a follow-up turn the agent can act on.
Design: docs/plans/native-deep-research.md.start.sh at its root and
Octopus allocates a port, runs it, proxies /apps/{id}/api/* to it and stops
it when idle — with the app's own state in a directory a rebuild never
touches. A running app can also hold conversations with your agents through
its own scoped token.
Design: docs/plans/applications.md,
application-backends.md,
app-agent-access.md.--resume transcripts are untouched by this.
Design: docs/plans/memory.md.Task, Codex's spawn_agent), the run shows up as a live card
with status and token counts rather than a tool call that sits there. An
Octopus agent can also bring its own named sub-agents.
Design: docs/plans/native-subagents.md.POST /api/auth/rotate), with no restart and nothing to edit by
hand: editing .env yourself changes what the server checks while leaving
those secrets keyed to a token nobody has. Rotation re-keys them, rewrites the
env files, swaps the live setting, drops the processes carrying the old token,
and hands the new one to tabs already open.
Design: docs/plans/token-rotation.md.octopus handoff imports local Claude Code sessions;
octopus pull exports a session as JSONL for local claude --resume.# Clone and set up
git clone https://github.com/archeryue/Octopus.git && cd Octopus
python3 -m venv .venv && .venv/bin/pip install -e "."
cp .env.example .env # edit OCTOPUS_AUTH_TOKEN
# Build the frontend (the server serves web/dist/)
cd web && bun install && bun run build && cd ..
# Run (API + UI on port 8000)
octopus serve
Open http://localhost:8000 and enter the install token from your .env. On a
fresh install that first token gets you to Create the first account —
pick a username and password, and that account becomes the admin (it also
adopts any agents/sessions already on disk). From then on you sign in with that
username and password, and the admin mints invite codes for anyone else who
should have their own account. Then pick the default Octo agent, create a
session, and start chatting. For phone access, octopus serve --tunnel gives
you a public HTTPS URL.
Auth for the agent's backend uses your existing CLI login (claude login /
codex login) by default — or add an API key under Credentials and attach
it to an agent.
# Terminal 1 — backend (hot-reload)
.venv/bin/uvicorn server.main:app --host 0.0.0.0 --port 8000 --reload
# Terminal 2 — frontend (Vite proxies /api + /ws to the backend)
cd web && bun dev
Open http://localhost:5173 for the hot-reloading dev server.
octopus serve # Start server (API + UI on port 8000)
octopus serve --tunnel # ... with a public Cloudflare Tunnel (HTTPS)
octopus handoff # Import a local Claude Code session
octopus pull <session-id> # Export an Octopus session as local JSONL
Backend: Python 3.12 · FastAPI · claude + codex CLI subprocesses ·
aiosqlite · APScheduler · cryptography (Fernet) · MCP namespaces served
in-process over streamable-HTTP
Frontend: React 19 · TypeScript (strict) · Vite · zustand · Tailwind v4 · Radix
./scripts/check.sh # every gate: ruff · mypy · pytest · eslint · vitest · tsc · contracts · docs index
.venv/bin/pytest -m "not real" # 1,313 backend tests, hermetic — no CLI, no network, ~34s
.venv/bin/pytest -m real # the 34 that drive a live model (needs a signed-in claude / codex)
cd web && bun run test # 299 frontend unit tests (vitest)
cd web && bun run typecheck # TypeScript check (tsc -b across the project)
cd web && bun run test:e2e # 107 Playwright tests in a real browser
cd web && bun run test:e2e:fast # ... the 67 that need no model (~40s)
cd web && bun run test:e2e:llm # ... the 40 that drive real Claude / Codex turns
The real-CLI tier is selected by marker rather than by filename, so a plain
--collect-only never spawns a model.
Install lefthook and run
./scripts/setup-hooks.sh. Commits then run the same gates ./scripts/check.sh
does, scoped to what you staged: ruff + mypy + the hermetic pytest tier for
Python, eslint + tsc + vitest for web, and the generated-contract and
docs-index checks when they could have drifted. Each skips when no relevant file
is staged, so a doc-only commit stays fast.
See docs/ for all documentation — start with docs/architecture.md for system design, data flow, and the WebSocket protocol; docs/plans/ holds the per-initiative design records.