XDOG

Tools for building AI agents and managing LLM deployments.

GitHub →

xdog / Packages / skills / Design

Instructions, domain data and host execution

xdog-skills depends on Agent and the standard library. It is an inert hub, not an execution harness. The goal skill describes planning, task decomposition, optional worker delegation, file updates, progress assessment and acceptance. Those semantic decisions belong to the current main Agent.

Goal's installed provider contributes native commands, actual model tools, owned storage/reminder resources and optional readonly views through generic SDK interfaces. Coding/Claw retain their controller, approvals, child runtime and message routes. Extensions do not contribute model tools.

Durable state, not runtime authority

The leased registry binds one current Goal/history to the actual owner. Tasks have one authority: workspace/.xdog/goals/<goal-id>/tasks/*.json. plan.md stores the main Agent's plan; progress.md stores version-checked progress reports. Expected-version task updates prevent lost writes. History/snapshots never grant a worker additional tools, lifecycle authority or writable parent context.

A delegated child may receive a scoped goal tool for explicitly assigned tasks. It updates its own task result through that tool; this grants no Goal lifecycle, parent report or permission authority. A host without children can do the work on its main Agent.

Reminders do not make semantic decisions

Generic owner/settled signals and optional Eyes task-file events enter a durable coalescer. When appropriate, Goal submits a stable-ID ACP reminder to the original main Agent's existing input route. ACP transports; the skill instructs; the main Agent decides what to do. Eyes uses its independent daemon and public CLI, not an embedded observer service.

Before continuation the main Agent reports progress relative to the previous round. Repeated no progress without a viable approach should lead it to pause, not loop blindly. Pause stops proactive reminders and its owned observation; accepted input, tools and children remain host-owned. User waits bind a concrete question and are not released by timers or untrusted events. Completed Goals stay current until explicit clear or a new Goal; there is no newly enterable host-wait state.