AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Penguin은 오픈소스 Python 기반 코딩 에이전트 런타임으로, 작업 상태·컨텍스트·도구 기록·검증 증거를 연결합니다
Penguin is an open-source, Python-first coding-agent runtime that keeps task state, context, checkpoints, tool history, and verification evidence connected across sessions and agents.
개발 도구Python · TypeScriptGitHub @Maximooch온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
🐧 is currently a work in progress... Stay tuned!
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Penguin is an open-source coding agent built on a scalable cognitive architecture runtime.
It is designed for long-running, tool-using, multi-agent software workflows: from
interactive coding in the TUI to persistent sessions, subagent delegation, and
API-driven automation. Penguin combines a coding-focused agent runtime with durable
state, workspace-aware tools, and multiple interfaces on top of the same core.README 전문 보기 ↗ooooooooo. o8o
`888 `Y88. `"'
888 .d88' .ooooo. ooo. .oo. .oooooooo oooo oooo oooo ooo. .oo.
888ooo88P' d88' `88b `888P"Y88b 888' `88b `888 `888 `888 `888P"Y88b
888 888ooo888 888 888 888 888 888 888 888 888 888
888 888 .o 888 888 `88bod8P' 888 888 888 888 888
o888o `Y8bod8P' o888o o888o `8oooooo. `V88V"V8P' o888o o888o o888o
d" YD
"Y88888P'
Penguin is an open-source coding agent built on a scalable cognitive architecture runtime.
It is designed for long-running, tool-using, multi-agent software workflows: from interactive coding in the TUI to persistent sessions, subagent delegation, and API-driven automation. Penguin combines a coding-focused agent runtime with durable state, workspace-aware tools, and multiple interfaces on top of the same core.
# Recommended: use uv for less environment/package-management hassle,
# faster installs/syncs, and support for this repo's safer dependency workflow.
uv tool install penguin-ai
# Alternative: plain pip still works
pip install penguin-ai
# Set a model provider key (OpenRouter is the easiest starting point)
export OPENROUTER_API_KEY="your_api_key"
# Launch Penguin
penguin
uv is the recommended path for most users: it is generally faster than pip, keeps
Python environment management simpler, and supports this repo's exclude-newer safety rail
for dependency resolution in development workflows.
Other entrypoints:
penguin - interactive Penguin TUI launcherptui - direct TUI aliaspenguin-cli - headless CLI for automation and scriptspenguin-web - FastAPI server for web/API usagepenguin-web writes one server log file per web server run by default:
{PENGUIN_WORKSPACE:-~/penguin_workspace}/server-logs/penguin-web-<timestamp>-<pid>.txt
The log file includes Penguin startup/application logs plus Uvicorn error and access logs, with per-file rotation enabled. Override the directory, force a specific file, or disable this behavior with:
export PENGUIN_WEB_LOG_DIR="/path/to/server-logs"
export PENGUIN_WEB_LOG_FILE="/path/to/logs.txt"
export PENGUIN_WEB_LOG_ENABLED=false
context/
artifacts, docs cache, and daily journal continuity.Penguin exposes the same runtime through several surfaces:
penguin / ptui - terminal-first coding workflow with streaming, tools, and session navigation.penguin-cli - scriptable CLI interface for prompts, tasks, config, and automation.penguin-web - REST + WebSocket/SSE backend for the TUI and custom integrations.PenguinAgent, PenguinClient, and PenguinAPI for embedding Penguin in code.Trusted Link callers can opt into durable chat requests for deduplicated execution and persisted result lookup.
Isolated runtimes can use run-scoped Link inference without a server-wide service secret.
Task/project endpoints now expose current runtime state rather than only legacy task summaries.
status, phase, dependencies, dependency_specs, artifact_evidence, recipe, metadata, and clarification_requests where relevant.POST /api/v1/tasks/{task_id}/execute now routes through RunMode, so non-terminal outcomes like waiting_input and clarification-needed results are preserved instead of being flattened into fake completion/failure states.
POST /api/v1/tasks/{task_id}/clarification/resume answers the latest open clarification request and resumes execution through the same RunMode lifecycle.
Session-goal endpoints under /api/v1/session/{session_id}/goal persist one
durable objective per saved session and execute it through bounded RunMode steps.
Goal control and run operations use explicit 404, 409, and 422 responses
for missing state, lifecycle conflicts, and invalid input.
GET /api/v1/events/sse streams OpenCode-compatible events and now includes session-scoped clarification status visibility for web clients.
PenguinAPI.run_task(...) and PenguinAPI.resume_with_clarification(...) are aligned with the web route behavior so programmatic callers see the same lifecycle truth.
These surfaces are still under active audit, but the current direction is explicit: web/API consumers should receive the same task/clarification truth that the backend runtime uses internally.
from penguin import PenguinAgent
with PenguinAgent() as agent:
response = agent.chat("Summarize the current task charter")
print(response["assistant_response"])
Penguin requires Python 3.11 through 3.12. The minimum version allows installing security-patched Pillow 13.
# Default install: CLI + web runtime + OpenCode TUI launcher support
pip install penguin-ai
# Compatibility alias for older install commands
pip install penguin-ai[web]
# Compatibility alias for older install commands
pip install "penguin-ai[tui]"
# Legacy Textual prototype / experimental UI support
pip install "penguin-ai[legacy_tui]"
# Full feature set
pip install penguin-ai[all]
git clone https://github.com/Maximooch/penguin.git
cd penguin/penguin
# Safe default: respects `[tool.uv] exclude-newer = "7 days"`
uv sync
# Editable dev/test install via pip still works if you prefer it
pip install -e .[dev,test]
uv InstallsThis repo configures uv to ignore package releases newer than 7 days by default:
[tool.uv]
exclude-newer = "7 days"
That gives the ecosystem a little time to detect and yank malicious releases before you pull them in. It's a useful guardrail, not a complete supply-chain strategy.
Convenience shortcuts:
make sync-safe # use the default 7-day delay
make lock-safe # refresh lockfile with the 7-day delay
make lock-latest # intentionally override and resolve newest compatible releases
make sync-latest # resolve + sync using newest compatible releases
Under the hood, the latest targets override the project default with --exclude-newer 2999-12-31T23:59:59Z.
| Extra | Description |
|---|---|
[tui] | Compatibility alias; default install already includes TUI launcher runtime |
[web] | Compatibility alias; default install already includes web runtime |
[legacy_tui] | Legacy Textual prototype / experimental UI support |
[llm_litellm] | Optional LiteLLM support for legacy/custom gateway workflows |
[memory_faiss] | FAISS vector search + embeddings |
[memory_lance] | LanceDB vector database |
[memory_chroma] | Compatibility alias (ChromaDB disabled pending upstream security fixes) |
[mcp] | Model Context Protocol client/server dependencies (Python 3.10+ for the MCP SDK) |
[browser] | Browser automation support. Installs PyDoll fallback; browser-harness must be installed from a local/source checkout because it is not published on PyPI yet. |
[pydoll] | PyDoll browser automation fallback only |
[all] | Everything above that is available from PyPI |
Browser-harness is Penguin's preferred browser_* backend on this branch, but it
is currently a local/source dependency rather than a PyPI package. For local
browser-harness testing, install Penguin's browser extra for the PyPI-available
fallback and then install browser-harness into the same environment from a source
checkout:
pip install "penguin-ai[browser]"
pip install -e /path/to/browser-harness
If browser-harness is unavailable, the pydoll_browser_* tools remain available
as the compatibility fallback.
The Penguin TUI launcher supports both development and packaged installs.
penguin prefers local penguin-tui/packages/opencode sources.~/.cache/penguin/tui.# Force local source mode
export PENGUIN_OPENCODE_DIR="/path/to/penguin/penguin-tui/packages/opencode"
# Force a specific sidecar binary
export PENGUIN_TUI_BIN_PATH="/path/to/opencode"
You can also override the release endpoint for staging/testing with PENGUIN_TUI_RELEASE_URL.
/models # interactive model selector
/model set <MODEL_ID> # set a specific model
/stream on|off # toggle streaming
/checkpoint [name] # save a checkpoint
/checkpoints [limit] # list checkpoints
/rollback <checkpoint> # restore a checkpoint
/tokens # token usage summary
/run task "Name" # start a specific task
/goal <objective> # save a session goal and start execution
/goal status # show the current session goal
/goal pause|resume # pause it, or resume execution
/goal run # restart an active goal after a non-terminal return
/goal clear # remove the session goal
/247 ... # exact alias for the corresponding /goal command
/config --global set git.attribution.prompt false # disable Git co-author guidance
Session goals require a persisted session. /goal <objective> stores durable
lifecycle state, then starts RunMode execution. With no user-configured
max_iterations, timeout_seconds, or goal token_budget, Penguin adds no
local iteration, wall-clock, or token stop. Replacing an unfinished goal requires
--replace. /247 is only a slash-command alias for /goal; the headless
--247 / --continuous flag still means continuous RunMode and is a different
interface. Session-goal run ownership is process-local in this release, so a
shared conversation store must be served by one Penguin web process rather than
multiple workers.
Penguin prompts for
Co-authored-by: penguin-agent[bot] <penguin-agent[bot]@users.noreply.github.com>
on agent-created commits by default. This is configurable prompt guidance only;
it does not modify Git identity or rewrite commits.
Penguin is structured as a runtime for long-lived agent workflows.
PenguinCore handles construction, delegation, and compatibility methods.penguin.core_runtime owns extracted runtime helpers for processing, model/provider behavior, checkpoints, token usage, action mapping, OpenCode/TUI bridging, diagnostics, and compatibility shims.Engine runs the reasoning loop, model calls, and tool orchestration.ConversationManager persists sessions, checkpoints, and conversation state.ContextWindowManager manages long-session token budgets with category-aware truncation,
multimodal handling, and replay-friendly context continuity.ToolManager and ActionExecutor run workspace-aware tools and action pipelines.Penguin's long-term direction is a scalable cognitive architecture runtime: a persistent agent kernel with userland surfaces for sessions, tools, orchestration, and observability.
Read more:
architecture.mdcontext/tasks/Penguin_SCAR_80_20_Roadmap.mdcontext/tasks/tui-opencode-implementation.md/goal and /247 workflows with persisted lifecycle state, RunMode execution, API/TUI controls, and truthful partial or blocked outcomes.ultra mode to the OpenAI-safe max wire effort.PenguinCore is now a thin compatibility/orchestration facade over focused penguin.core_runtime modules.OpenAI speed modes in the TUI: /fast requests priority; /ultrafast requests
ultrafast. Both support on, off, and status, subject to model/account access.
See speed-mode configuration.
architecture.md
context/tasks/Penguin_SCAR_80_20_Roadmap.md
git clone https://github.com/Maximooch/penguin.git
cd penguin/penguin
pip install -e .[dev,test]
pytest -q
Licensing in this repository is split by component:
penguin/ and the main Penguin runtime are licensed under the GNU Affero General Public
License v3.0 or later.penguin-tui/ contains OpenCode-derived TUI code that remains MIT-licensed; see
penguin-tui/LICENSE.Enterprise licensing without AGPL copyleft requirements is under consideration. If you are interested, contact [email protected].
Built upon insights from:
penguin-tui/For long-running shell commands, see managed processes. Completed handles are retired under capacity pressure while logs and cached retry results remain available; live commands keep their slots.
Workspace-mode file writes outside the active project, including sibling worktrees,
request approval in the TUI. See tool permissions
for approval scope and limitations. Use /permissions in the TUI to enable
Full access for the current session and avoid per-file approval prompts.