Personal assistant agent with persistent memory and configurable persona
Project description
Pip-Boy
A personal assistant agent with persistent memory and a configurable persona, providing a chat-based interface for workstation interaction. Built on Anthropic's Claude API, it supports multi-agent teamwork, task planning, git worktree isolation, and extensible skills.
Features
Core
- Conversational REPL — Interactive chat loop with readline history and UTF-8 support
- Persona System — Fixed lead persona ("Pip-Boy") with customizable teammate personas via Markdown files
- Web Search — Tavily integration with automatic DuckDuckGo fallback
Tools
- Filesystem —
read,write,edit,glob(sandboxed to working directory) - Shell —
bashexecution with optional background mode for long-running commands - Web —
web_searchandweb_fetchfor real-time information retrieval - Skills —
load_skilldynamically loads built-in and user-defined skill guides (Markdown with YAML frontmatter)
Task Planning
- Story / Task DAG — Two-level planning: stories (epics) contain tasks with dependency tracking
- Kanban Board —
task_board_overview,task_board_detailfor status visualization - State Machine — Tasks flow through
pending→in_progress→in_review→completed/failed - Persistent Storage — JSON files under
.pip/tasks/survive across sessions
Multi-Agent Team
- Teammate Spawning —
team_spawncreates daemon threads with per-session model and turn limits - Inbox Messaging — JSONL-based message bus (
send,read_inbox) between lead and teammates - Model Selection — Per-project
.pip/models.jsondefines available models for teammate assignment - Protocol Tracking — Structured shutdown and plan approval flows
- CLI Commands —
/teamfor roster status,/inboxto peek the lead inbox
Git Worktree Isolation
- Isolated Branches — Each subagent works in its own git worktree (
.pip/.worktrees/{name}/, branchwt/{name}) - Sync / Integrate / Cleanup — Worktree lifecycle management with merge conflict detection
- Task Submission —
task_submitsyncs work and transitions task status automatically
Context Management
- Micro-Compaction — Old tool results replaced with placeholders, keeping the last N rounds intact
- Auto-Compaction — When token count exceeds threshold, full transcript is saved and replaced with an LLM-generated summary
- Transcript Persistence — Timestamped JSON transcripts stored under
.pip/transcripts/
Skills (Built-in)
| Skill | Purpose |
|---|---|
task-planning |
Structured planning with story/task breakdown |
agent-team |
Multi-agent coordination and delegation |
git |
Git operations and workflow guidance |
code-review |
Code review methodology |
create-skill |
Authoring new custom skills |
Workspace Scaffold
On first run in a new project, the agent automatically creates:
.pip/directory structure (tasks, transcripts, team, skills).pip/models.jsonwith default model catalog.pip/agents/pip-boy.mddefault agent persona.envfrom template (if missing).gitignoreentries for.pip/and related paths.pip/.scaffold_manifest.jsonfor tracking scaffold file versions
Scaffold files are version-tracked: unmodified files are auto-updated when a new version ships changes; locally modified files are left untouched with a warning.
Installation
Prerequisites: Python >= 3.11
pip install pip-boy
Development (from source)
git clone https://github.com/ByeDream/Pip-Boy.git
cd Pip-Boy
pip install -e .
Usage
# Navigate to your target project and run
cd /path/to/your/project
pip-boy
# Or use python -m
python -m pip_agent
# CLI-only mode (no WeChat/WeCom channels)
pip-boy --cli
# Force WeChat QR login
pip-boy --scan
# Show version
pip-boy --version
On first launch, the scaffold automatically creates .pip/ directory structure, .env (from template), and .gitignore entries in the target project. Edit the generated .env to fill in your ANTHROPIC_API_KEY, then run again.
The agent uses Path.cwd() as its working directory — always run it from the project you want to interact with.
Updating
From within a running session:
/update
Or manually:
pip install --upgrade pip-boy
Configuration
All configuration is done via environment variables or .env file.
| Variable | Required | Default | Description |
|---|---|---|---|
ANTHROPIC_API_KEY |
Yes | — | Anthropic API key |
ANTHROPIC_BASE_URL |
No | (api.anthropic.com) | Custom API endpoint (proxy support) |
MODEL |
No | claude-sonnet-4-6 |
Default model for the lead agent |
MAX_TOKENS |
No | 8096 |
Max response tokens |
SEARCH_API_KEY |
No | — | Tavily API key; falls back to DuckDuckGo |
COMPACT_THRESHOLD |
No | 50000 |
Token estimate to trigger auto-compaction |
COMPACT_MICRO_AGE |
No | 3 |
Micro-compaction: rounds of tool results to preserve |
VERBOSE |
No | true |
Verbose output |
PROFILER_ENABLED |
No | false |
Enable performance profiling |
Project-Level Files
| File | Location | Purpose |
|---|---|---|
models.json |
.pip/ |
Model catalog for teammate spawning |
*.md |
.pip/team/ |
Teammate persona definitions (YAML frontmatter + body) |
_meta.json + *.json |
.pip/tasks/{story}/ |
Task board state |
*.md |
.pip/skills/ |
User-defined skills |
Dependencies
anthropic— Claude API clientpydantic-settings— Configuration managementtavily-python— Web search APIddgs— DuckDuckGo fallback searchpyyaml— YAML parsing for skills and team fileshttpx— HTTP client for channel communicationqrcode— Terminal QR code rendering for WeChat loginpyreadline3— Readline for Windows
License
This project is licensed under the MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pip_boy-0.1.1.tar.gz.
File metadata
- Download URL: pip_boy-0.1.1.tar.gz
- Upload date:
- Size: 104.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7681bd62798e9191a65d9dd0f46893c584f5922b5ddc1bc26f32a4b0ad492004
|
|
| MD5 |
c9060e8469c5f800519e66a3bb55f99c
|
|
| BLAKE2b-256 |
d9daba1fe7a068ee0e6f5d557af03157bb357567bd00961d8a614876ab51cfe3
|
Provenance
The following attestation bundles were made for pip_boy-0.1.1.tar.gz:
Publisher:
publish.yml on ByeDream/Pip-Boy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pip_boy-0.1.1.tar.gz -
Subject digest:
7681bd62798e9191a65d9dd0f46893c584f5922b5ddc1bc26f32a4b0ad492004 - Sigstore transparency entry: 1283009045
- Sigstore integration time:
-
Permalink:
ByeDream/Pip-Boy@6c369bdfc4c2327aaba9676449dff91b28c8796d -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ByeDream
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6c369bdfc4c2327aaba9676449dff91b28c8796d -
Trigger Event:
push
-
Statement type:
File details
Details for the file pip_boy-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pip_boy-0.1.1-py3-none-any.whl
- Upload date:
- Size: 90.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7edb802fc5bafb7f9693cf56b5dd8cd25388b42a1b1f4721a85f21a1a1d688a7
|
|
| MD5 |
57ea6a099fb1ad9cb316af814df4e067
|
|
| BLAKE2b-256 |
dcba8a86c3c8f9141aa1842e665393f98793aa481f00185b45b46b8b0b3f8f71
|
Provenance
The following attestation bundles were made for pip_boy-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on ByeDream/Pip-Boy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pip_boy-0.1.1-py3-none-any.whl -
Subject digest:
7edb802fc5bafb7f9693cf56b5dd8cd25388b42a1b1f4721a85f21a1a1d688a7 - Sigstore transparency entry: 1283009054
- Sigstore integration time:
-
Permalink:
ByeDream/Pip-Boy@6c369bdfc4c2327aaba9676449dff91b28c8796d -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ByeDream
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6c369bdfc4c2327aaba9676449dff91b28c8796d -
Trigger Event:
push
-
Statement type: