How devoidfury/hotdog works
hotdog is a local-first agent harness for OpenAI-compatible inference backends. Its main workflow starts from a one-shot or interactive CLI (or Web UI), assembles configuration and extensions, runs an agent against a model, and exposes tool use and session results. The graph also preserves documented extension capabilities such as approvals, compaction, skills, MCP, subagents, and workflows. Relationships for unsampled features are based on README descriptions; source excerpts are partial, so implementation-level links are limited.
Main entry points: agent.ts Agent loop · tool-registry.ts Tool registry · main.ts Runtime bootstrap · extensions.ts Extension loader
Components 24
Entry and configuration
- Runtime bootstrap
src/core/main.ts - Configuration and profiles
src/core/config - Extension loader
src/core/extensions/extensions.ts
Agent runtime
- Agent loop
src/core/agent.ts - Context management
src/core/context/context-manager.ts - LLM client
src/core/llm-client/client.ts - Tool execution
src/core/tool-executor.ts - Tool registry
src/core/extensions/tool-registry.ts - Extension hooks
src/core/hooks.ts
Agent capabilities
- File tools
src/extensions/core-tools - Bash tool
src/extensions/bash-tool/index.ts - Tool approvals
src/extensions/user-gate/index.ts - Context compaction
src/extensions/compaction/index.ts - Skills
src/extensions/skills/index.ts - MCP client
src/extensions/mcp-client/client.ts - Subagents
src/extensions/subagents/index.ts - Workflow graphs
src/extensions/workflows/engine.ts - Task handoff
src/extensions/handoff-tool/index.ts
User interfaces
- CLI modes
src/extensions/ui-interactive-cli/index.ts - One-shot CLI
src/extensions/ui-one-shot/index.ts - Web UI
src/extensions/webui/server.ts - WebSocket server
src/extensions/websocket/server.ts
Session state
- Session logs
src/core/session/session-log.ts
Other components
- User
Connections 25
- User → Runtime bootstrap: starts
- Runtime bootstrap → Configuration and profiles: loads settings
src/core/main.ts - Runtime bootstrap → Extension loader: loads extensions
src/core/main.ts - User → CLI modes: interacts
- User → One-shot CLI: submits prompt
- User → Web UI: opens interface
- Web UI → WebSocket server: serves sessions
src/extensions/webui/server.ts - CLI modes → Agent loop: runs agent
- One-shot CLI → Agent loop: runs agent
- Agent loop → Context management: manages context
- Agent loop → LLM client: requests completion
- Agent loop → Tool execution: runs tool calls
- Tool execution → Tool registry: resolves tools
- Extension loader → Extension hooks: registers hooks
- Extension loader → Tool registry: registers tools
- Tool registry → File tools: offers tools
- Tool registry → Bash tool: offers tool
- Tool execution → Tool approvals: checks calls
- Agent loop → Context compaction: manages context
- Agent loop → Skills: loads guides
- Tool registry → MCP client: offers tools
- Agent loop → Subagents: delegates tasks
- Agent loop → Workflow graphs: runs workflows
- Agent loop → Task handoff: restarts with plan
- Agent loop → Session logs: logs sessions