You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This pinned issue is the durable progress keeper for Peggy, a long-running personal-assistant agent built on the glue framework. It tracks execution order, status, and acceptance for the OpenClaw/Hermes-inspired local assistant work.
Operating contract: no feature issue is closed without a merged PR that references it. See CONTRIBUTING.md for the per-issue workflow.
Product Goal
Peggy is a local-first personal-assistant agent that is:
reachable from multiple channels: CLI, local daemon clients, and Telegram today
durable across sessions through SQLite-backed memory and recall
capable of permission-gated coding work in trusted local workspaces
extensible through file-backed skills, roles, and MCP servers
a testbed for keeping glue clean: product policy lives in agents, not framework defaults
Inspirations: OpenClaw for channel multiplexing and Hermes-Agent for skills-as-files, FTS5 session search, and tools-as-RPC.
Current Phase
M7: Dual-track — Glue coding-agent binary + Peggy OpenClaw polish — in progress as of 2026-06-07.
🚀 Public launch (2026-05-27). The framework now has a homepage — https://glue-framework-site.vercel.app — backed by a first tagged release v0.1.0 (pre-1.0 stance: ADR-0013). Discussions and a security policy (SECURITY.md) are live; issue + PR templates wired. Social announcement still gated on a deliberate decision.
M1–M6 are shipped (see Shipped Milestones). Peggy is in owner/developer dogfooding on the peggy-dogfood Multipass VM. Work now runs on two parallel tracks, kept independently reviewable under the one-issue/one-PR contract:
Track A — Glue as a coding-agent binary (framework). Make cmd/glue an awesome coding agent in its own right. ADR-0012 established the boundary: Glue owns the reusable coding-tool bundle (tools/coding) and the binary's coding surface (glue run/serve --coding); Peggy is a thin consumer. The coding-tool surface and the interactive TUI are complete — provider choice + Pi-class tools (edit_file, list_dir, find_files, grep) + a bubbletea TUI with streaming text, tool cards, inline permission prompts, edit_file diff preview, and slash commands. glue run --provider codex --coding is now an interactive coding agent by default in a terminal. Only one Track A enhancement remains: the sandboxed Executor backend (container/VM) behind the existing seam.
Track B — Peggy as an OpenClaw-clone personal assistant (product). Harden the always-on assistant from concrete dogfood findings: proactivity, richer channel UX, and dashboard actions.
The architectural rule still holds (ADR-0005 §1): product concerns live in agents/peggy; reusable primitives live in glue / tools/*.
Harness quality — be the best Gemini + open-weight coding harness
Source-verified analysis of pi / Cline / Codex CLI / Gemini CLI distilled into docs/coding-harness-roadmap.md (#336). Implementation order (P0 first — all four harnesses converge on these):
🌐 Coding-agent homepage shipped (2026-06-09). New repo erain/glue-coding-agent-site (Astro+Tailwind, same design system as the framework site, terminal-green accent) → https://glue-coding-agent-site.vercel.app once imported in the Vercel dashboard. The framework site's §06/§07 now cross-link it.
Schema sanitization / Unicode stripping — verified unnecessary.providers/gemini: sanitize tool schemas (nullable tuples) + strip invalid Unicode in prompts #313, closed without a PR. Probed live: Gemini 3.x accepts array-typed type and recursive $ref via parametersJsonSchema, and Go's encoding/json auto-sanitizes invalid UTF-8 — so the JS-harness sanitization tricks are no-ops on glue's path. (The "never retry 400" trick is likewise moot: glue has no provider-level retry; the genai SDK owns transport.)
All four landed as v1.8.0 (the gemini default-id fix that shipped as v1.7.0 was also promoted out of the changelog's Unreleased section).
Official homepage shipped. New repo erain/glue-framework-site — Astro + Tailwind landing page modeled on glue-review-site (hero + 7 numbered sections + FAQ + OG image), deployed to https://glue-framework-site.vercel.app with GitHub→Vercel auto-deploy on push.
M1 — Peggy v0.1: "She remembers and you can text her". Shipped 2026-05-16. Foundation ADRs, Codex provider, SQLite/FTS5 store, memory tools, single-prompt CLI, and Telegram channel.
M6 — Dogfood hardening and product shell. Shipped 2026-05-25. Doctor, quickstart, persistent permission grants, Telegram daemon UX, sessions, diagnostics, memory backup/restore, and local dashboard.
See agents/peggy/CHANGELOG.md for detailed release notes and PR history.
Known Product Gaps
The M6 dogfood blockers are complete; the active gaps are now tracked in the M7 Work Queue above. Additional Track B candidates not yet filed: packaged install flows, calendar / external-service triggers, and more realistic long-running personal-assistant evaluations. New gaps from daily dogfooding of peggy-dogfood should be filed as focused follow-up issues and linked under the M7 Work Queue.
Pacing
Sessions should check /status periodically and pause/resume around quota limits rather than forcing oversized turns. Keep PRs small enough to review and merge independently.
This pinned issue is the durable progress keeper for Peggy, a long-running personal-assistant agent built on the
glueframework. It tracks execution order, status, and acceptance for the OpenClaw/Hermes-inspired local assistant work.Operating contract: no feature issue is closed without a merged PR that references it. See
CONTRIBUTING.mdfor the per-issue workflow.Product Goal
Peggy is a local-first personal-assistant agent that is:
glueclean: product policy lives in agents, not framework defaultsInspirations: OpenClaw for channel multiplexing and Hermes-Agent for skills-as-files, FTS5 session search, and tools-as-RPC.
Current Phase
M7: Dual-track — Glue coding-agent binary + Peggy OpenClaw polish — in progress as of 2026-06-07.
🚀 Public launch (2026-05-27). The framework now has a homepage — https://glue-framework-site.vercel.app — backed by a first tagged release
v0.1.0(pre-1.0 stance: ADR-0013). Discussions and a security policy (SECURITY.md) are live; issue + PR templates wired. Social announcement still gated on a deliberate decision.M1–M6 are shipped (see Shipped Milestones). Peggy is in owner/developer dogfooding on the
peggy-dogfoodMultipass VM. Work now runs on two parallel tracks, kept independently reviewable under the one-issue/one-PR contract:cmd/gluean awesome coding agent in its own right. ADR-0012 established the boundary: Glue owns the reusable coding-tool bundle (tools/coding) and the binary's coding surface (glue run/serve --coding); Peggy is a thin consumer. The coding-tool surface and the interactive TUI are complete — provider choice + Pi-class tools (edit_file,list_dir,find_files,grep) + a bubbletea TUI with streaming text, tool cards, inline permission prompts, edit_file diff preview, and slash commands.glue run --provider codex --codingis now an interactive coding agent by default in a terminal. Only one Track A enhancement remains: the sandboxedExecutorbackend (container/VM) behind the existing seam.The architectural rule still holds (ADR-0005 §1): product concerns live in
agents/peggy; reusable primitives live inglue/tools/*.M7 Work Queue
Track A — Glue coding-agent binary
867aada. Addstools/codingreusable bundle andglue run/serve --coding; makes Peggy a thin consumer with aCodingExecutorseam.cmd/glue. cmd/glue: select provider from registry, support codex coding agent #272, PR cmd/glue: select provider from registry, support codex coding agent (closes #272) #274, commit5a0d2ac.glue run/serve --providerselects codex/gemini/nvidia/openrouter from the registry;--modeldefaults to the provider's default. Enablesglue run --provider codex --coding.edit_filetool. tools/fs: add edit_file tool for surgical edits #275, PR tools/fs: add edit_file tool for surgical edits (closes #275) #276, commite3bd34a. Permission-gated surgical exact-string replacement with a unique-match guard andreplace_all, registered in thetools/codingbundle.d625a97. Addslist_dir,find_files, andgrep(workspace-scoped, escape-safe,.git-skipping, output-capped;grepskips secret/oversized files), registered in thetools/codingbundle.ccf04fc.glue runopens a bubbletea TUI by default in a terminal (scrollable transcript, streaming text, tool-call cards, inline permission prompts, edit_file diff preview, slash commands); scripted and--promptpaths preserved. Designed in ADR-0014. Charmbracelet deps live strictly undercmd/glue/tui/; the library import graph is unchanged./command autocomplete. cmd/glue/tui: inline autocomplete for / slash commands #318, PR cmd/glue/tui: inline autocomplete for / slash commands (closes #318) #319, commit89d26bf(v1.9.0). Typing/opens a filtering command popup (↑/↓ navigate, Tab complete, Esc keep-text, Enter run-or-complete), mirroring the@-file picker;/helpand the picker now share one command list.Harness quality — be the best Gemini + open-weight coding harness
Source-verified analysis of pi / Cline / Codex CLI / Gemini CLI distilled into
docs/coding-harness-roadmap.md(#336). Implementation order (P0 first — all four harnesses converge on these):925092f.4d24ade.6364ddd.085208b.c0bd7e2.7dfe7fe.cc3f98c.ef3f078. Queue complete — shipped as v1.13.0.🌐 Coding-agent homepage shipped (2026-06-09). New repo erain/glue-coding-agent-site (Astro+Tailwind, same design system as the framework site, terminal-green accent) → https://glue-coding-agent-site.vercel.app once imported in the Vercel dashboard. The framework site's §06/§07 now cross-link it.
Goal loop — "loop engineering" /
/goal(ADR-0016)Phase 1 —
Agent.PursueGoalprimitive. glue: goal loop primitive (Agent.PursueGoal) — loop-engineering /goal, Phase 1 #320, PR glue: goal loop primitive Agent.PursueGoal (closes #320) #321, commite198da5(v1.10.0). Headless goal loop: plan a verifiable checklist → maker (fresh Ralph-style session) → separate checker audits via structured output → decide. Guardrails: max iterations, no-progress, token budget.GoalSpec.Emitstreams progress.Phase 2 — TUI
/goal. cmd/glue/tui: /goal — drive Agent.PursueGoal from the TUI (goal loop Phase 2) #322, PR cmd/glue/tui: /goal — drive Agent.PursueGoal from the TUI (closes #322) #323, commit8ac9044(v1.11.0)./goal <objective>runsPursueGoalin the background (chat stays usable); live in-place checklist card +◎ goalstatus-bar segment;status|pause|resume|clear(resume continues from the verified checklist via newGoalSpec.Checklistseed — no re-planning). Also:GoalSpec.Permissionnow reaches planner/checker sessions; TUI permission prompts queue FIFO.Phase 3 — durable, isolated, schedulable goals (v1.12.0):
glue/goal:*state + resume across restarts. glue: durable goal state + resume across restarts (goal loop Phase 3a) #324, PR glue: durable goal state + resume across restarts (closes #324) #325, commit949c7bd.PursueGoalcheckpoints aGoalRecordper verdict (cancel →paused);LoadGoal/ListGoals;StartIterationkeeps resumed sessions fresh; TUI/goal resumesurvives restarts,/goal list.00088ea./goal -wruns maker+checker in.glue/worktrees/<goal-id>on branchgoal/<id>(reviewable branch, never auto-merged); resume re-attaches viaGoalRecord.WorkDir.glue goalsubcommand (scheduled/CI goals). cmd/glue: headless 'glue goal' subcommand — scheduled/CI goal runs (goal loop Phase 3c) #328, PR cmd/glue: headless glue goal subcommand (closes #328) #329, commit10bc6dc. Full loop without a TUI, status-mapped exit codes (0/2/3/4/1),--list/--resume/--worktree/--budget; store shared with the TUI; verified live end-to-end on gemini.(planned, follow-up) Daemon goal endpoints — start/inspect goals over
glue serve/connect(alongside agents/peggy: surface schedules over daemon, Telegram, and dashboard #280's schedule surfacing).(planned, later) Sandboxed
Executorbackend (container/VM) behind the existing seam.(planned, follow-ups to cmd/glue: interactive TUI for the coding agent (closes the M7 Track A 'interactive multi-turn' loophole) #291) TUI on
glue connect(daemon-backed shell); per-tool spinners; per-hunk diff approval; glamour markdown rendering for assistant text.Gemini harness hardening (being a first-class Gemini 3.x coding harness) — shipped in v1.8.0
thoughtSignature+ enableincludeThoughts. providers/gemini: round-trip thoughtSignature on tool calls + enable includeThoughts (fixes thought_signature 400) #311, PR providers/gemini: round-trip thoughtSignature + enable includeThoughts (closes #311) #315, commitc138c08. Fixes400 … Function call is missing a thought_signatureon the second turn of any Gemini 3.x tool conversation — captures the signature ontoloop.ContentPart.Signatureand echoes it on replay. Verified live with a two-turn tool loop.thoughtSignaturefallback. providers/gemini: synthetic thoughtSignature fallback for active-loop model turns #312, PR providers/gemini: synthetic thoughtSignature fallback for active-loop turns (closes #312) #316, commit7c0f6c2. Injects theskip_thought_signature_validatorsentinel on active-loop model turns that reach Gemini 3.x without a real signature (compacted / pre-fix history). Verified live.GOOGLE_GENAI_API_VERSIONenv knob. providers/gemini: GOOGLE_GENAI_API_VERSION env knob #314, PR providers/gemini: GOOGLE_GENAI_API_VERSION env knob (closes #314) #317, commit7275e3a. Pins the API version (e.g.v1alpha) to reach version-gated preview features without a code change.typeand recursive$refviaparametersJsonSchema, and Go'sencoding/jsonauto-sanitizes invalid UTF-8 — so the JS-harness sanitization tricks are no-ops on glue's path. (The "never retry 400" trick is likewise moot: glue has no provider-level retry; the genai SDK owns transport.)All four landed as v1.8.0 (the gemini default-id fix that shipped as v1.7.0 was also promoted out of the changelog's Unreleased section).
Track B — Peggy OpenClaw polish
a3d23b9.peggy serveruns a scheduler;peggy schedule add|remove/peggy schedulesmanage persisted prompt/skill runs on--every/--atcadence with a per-schedule permission tier (defaulttrusted). Fire-forwards past missed ticks.peggy-dogfoodVM.Repo hygiene (shipped)
cmd/gluede-monolithed. cmd/glue: split the main.go monolith into per-subcommand files #330, PR cmd/glue: split the main.go monolith into per-subcommand files (closes #330) #331, commitb020548. main.go (3,005 lines) split into per-subcommand files (run / usage / serve / connect / connect_inspect; tests along the same seams) — pure declaration movement, signatures byte-identical.8268799. ADR-0013 addendum records the accidental v0.5.0 → v1.2.0 jump and carries the pre-1.0 stance onto the 1.x line; README "Project status" / CHANGELOG header / project-plan Track A brought current;.gitignorecovers/glue+/peggy.5a90686. 23 files re-formatted; CI test job now fails ongofmt -loutput.docs/building-agents.mdend-to-end guide,examples/local-agentmodernized toglue.NewTool[T],doc.gostaleness fixed.glue-review's non-deterministicTestFixtureReplaybehindGLUE_REVIEW_LIVE_FIXTURESso free-model variance no longer flakes the per-PR live CI job.docs/project-plan.mdcurrent (dual-goal status;#1marked historical) and refreshed this phase summary.#110(#1historical), design.md package list completed (tools/shell, tools/coding, tools/mcp), peggy README "What's coming" refreshed, gap-analysis marked historical snapshot.glue-review-site(hero + 7 numbered sections + FAQ + OG image), deployed to https://glue-framework-site.vercel.app with GitHub→Vercel auto-deploy on push.3866291. ADR-0013 records the pre-1.0 stability stance; SECURITY.md provides a reporting channel;.github/ISSUE_TEMPLATE/+ PR template wired; first tagged releasev0.1.0; Discussions enabled; repo description / homepage / topics set.Completed Dogfood Readiness Work
267e004. Addspeggy doctortext/JSON checks for provider credentials, SQLite recall, workspace context, skills/roles, coding policy, Telegram config, permissions, and MCP settings.c96cd0d. Documents install/auth, starter workspace, minimal dogfood settings,peggy doctor, daemon smoke, recall smoke, and optional Telegram wiring.e58f46a. Persists daemon permission grants across restarts and addsglue connect --permissions/--forget-permissioninspect and revoke controls.23000d3. Adds Telegram/help, immediate progress replies for daemon runs, and long-reply splitting instead of hard truncation.f4a771c. Addspeggy sessionswith prefix filtering, JSON output, and SQLite/file-backed session summaries without starting a provider.36a66cd. Adds authenticated daemon diagnostics andglue connect --diagnosefor healthy, missing/stale metadata, bad-token, unreachable, and recent-error states.64a8fb5. Adds versioned curated-memory JSON export/import, validation, dry-run reports, and duplicate skipping by id or normalized content.b8da74b. Addspeggy dashboard, a localhost web control surface for daemon health, diagnostics, tools, skills, roles, memories, recall, and recent local sessions.Dogfood Polish
2e67e1a. Lets the local dashboard start prompt runs via the existing authenticated daemon run/SSE endpoint and render the final assistant response without exposing the bearer token in HTML.Shipped Milestones
peggy serve,glue connect, Telegram daemon-client mode, and per-channel permission tiers.peggy status.peggy init, usage summaries, daemon memory/recall controls, and Telegram daemon role/skill/memory/status commands.See
agents/peggy/CHANGELOG.mdfor detailed release notes and PR history.Known Product Gaps
The M6 dogfood blockers are complete; the active gaps are now tracked in the M7 Work Queue above. Additional Track B candidates not yet filed: packaged install flows, calendar / external-service triggers, and more realistic long-running personal-assistant evaluations. New gaps from daily dogfooding of
peggy-dogfoodshould be filed as focused follow-up issues and linked under the M7 Work Queue.Pacing
Sessions should check
/statusperiodically and pause/resume around quota limits rather than forcing oversized turns. Keep PRs small enough to review and merge independently.