personal-assistant
Vision
Self-hosted AI coding agent that replicates Claude Code behavior using open-source models, fully owned and controlled. Goose CLI + Groq API (openai/gpt-oss-120b) + adapted system prompts from the Claude Code leak, with local Ollama fallback for offline use. MCP-connected to the full pal-e-platform stack. Configuration managed by SaltStack.
Operating thesis: The value of Claude Code is 80% prompt engineering and 20% model quality. The leaked prompts (515 fragments from Piebald-AI + Opus 4.6 system prompt) provide the behavioral blueprint. Goose provides the harness. Groq API provides fast inference on open-weight models (gpt-oss-120b, 120B params) at low cost. The result: fast inference for automations and delegation at API pricing, with Claude Code retained for complex agentic work.
Long-term play: As open-source coding models improve (Qwen4, DeepSeek V5), the same infrastructure scales up. The prompt engineering and platform integration are the durable investment. The model and inference provider are swappable components — if Groq disappears, download weights and self-host.
User Stories
| Story |
Role |
Description |
Success Metric |
| <strong>core-agent</strong> |
Developer (Lucas) |
I can use a Claude Code-like agentic coding experience powered by open-source models, with full MCP access to my platform. |
Goose + gpt-oss-120b completes structured coding tasks (PR creation, code review, file editing) with acceptable quality. |
| <strong>groq-pivot</strong> |
Developer (Lucas) |
I can use Groq API as the primary inference backend for Goose, with fast response times and no GPU infrastructure to manage. |
Goose + Groq API (gpt-oss-120b) handles agentic tasks with acceptable latency. Salt-managed credentials. Fallback to Ollama for offline use. |
| <strong>offline-fallback</strong> |
Developer (Lucas) |
I can switch to local Ollama inference when offline or when Groq is unavailable, without changing my workflow. |
Profile switching is seamless. Local model selected and tested (#24). |
| <strong>platform-automation</strong> |
Platform Operator (Lucas) |
I can run automated platform tasks (PR reviews, CI monitoring, doc updates) without consuming Claude API credits. |
Automated tasks run on Groq API at predictable cost. |
| <strong>customer-ai</strong> |
Business Owner (Lucas) |
I can offer AI-powered features to customers (chat-with-docs, guided workflows) using my own infrastructure. |
Customer-facing AI features run on owned infrastructure with predictable costs. |
Architecture
System Overview
Three Layers (Replacing Claude Code)
| Layer |
Claude Code |
personal-assistant |
| Model (brain) |
Claude Opus/Sonnet via API |
gpt-oss-120b via Groq API (primary), local Ollama (fallback) |
| Prompts (behavior) |
515 internal prompt fragments |
Adapted versions, version-controlled |
| Interface (harness) |
Proprietary TypeScript/React/Ink CLI |
Goose (open-source Rust CLI by Block) |
Cost Model
| Option |
Monthly Cost |
Speed |
| Groq API (gpt-oss-120b) |
Usage-based (currently free tier) |
Fast cloud inference |
| Local only (Ollama CPU) |
$0 |
~15-25 tok/s |
Plan
5 sprints on board-personal-assistant. Sprint 1 complete (infrastructure + Groq pivot). Sprint 2 in progress (system prompts, model evaluation, goose-custom repo).
Board
board-personal-assistant — Personal Assistant Board. Continuous kanban.
Status
- Sprint 1 COMPLETE (2026-07-04) — Groq credentials, Goose config, Salt IaC, docs updated
- Sprint 2 in progress — #6 (system prompts), #23 (model evaluation), #26 (goose-custom repo)
- Forgejo repo: ldraney/personal-assistant
- Salt state:
pal-e-platform/salt/states/goose/ manages config.yaml with pillar-injected secrets
- Groq API key stored at
~/secrets/groq/api_key, GPG-encrypted in Salt pillar
Milestones
| Date |
Milestone |
Impact |
| 2026-06-17 |
Project bootstrapped |
Forgejo repo, architecture docs, project page, board created. Research complete on model selection, GPU pricing, Goose capabilities. |
| 2026-07-04 |
Sprint 1 complete — Groq pivot |
Kimi K2 deprecated on Groq → pivoted to gpt-oss-120b. Groq credentials stored, Goose configured with Salt IaC, all docs updated. MCP servers connected (Forgejo, pal-e-docs). |
Repos
| Repo |
Platform |
Role |
Status |
| <a href="https://forgejo.tail5b443a.ts.net/ldraney/personal-assistant">personal-assistant</a> |
Forgejo |
Architecture docs, system prompts, evaluation results |
active |
| goose-custom (planned) |
Forgejo |
Goose config, GOOSE.md, recipes — mirrors claude-custom pattern |
planned (#26) |
Infrastructure
| Component |
Details |
| Primary Inference |
Groq API — openai/gpt-oss-120b, OpenAI-compatible endpoint |
| Local Fallback |
Ollama on archbox (host process) — model TBD (#24), CPU inference via 128GB RAM |
| Agent Harness |
Goose CLI v1.27.2 (open-source by Block, Rust, Apache 2.0) — MCP support, OpenAI-compat backend |
| System Prompts |
Adapted from Claude Code leak (Piebald 515 fragments + Opus 4.6), version-controlled |
| MCP Servers |
Connected: pal-e-docs, Forgejo. Available: Woodpecker, Gmail, Sheets, Notion, GroupMe |
| Config Management |
SaltStack — <code>salt/states/goose/</code> renders config.yaml with pillar-injected secrets |
| Secrets |
GPG-encrypted Salt pillar: groq_api_key, forgejo_token, paldocs_api_key |