Skip to main content

Personal assistant agent with persistent memory and configurable persona

Project description

Pip-Boy

CI PyPI Python License

Pip-Boy 3000 Mark IV

A personal assistant agent with persistent memory, multi-channel support, and a configurable persona. Built on Anthropic's Claude API, it supports multi-agent teamwork, task planning, git worktree isolation, and extensible skills — accessible via CLI, WeChat, or WeCom.

Features

Core

  • Conversational REPL — Interactive chat loop with readline history and UTF-8 support
  • Persona System — Lead persona ("Pip-Boy") with customizable teammate personas via Markdown + YAML frontmatter
  • Multi-Channel — CLI, WeChat (personal), and WeCom (enterprise) channels with unified message routing
  • Web Search — Tavily integration with automatic DuckDuckGo fallback

Memory System

A three-tier pipeline that learns from conversations automatically:

  • L1 Reflect — Extracts behavioral observations (user preferences, decision patterns) and objective experience (technical lessons, API insights, reusable patterns) from conversation transcripts
  • L2 Consolidate — Merges observations into memories with reinforcement, decay, and conflict resolution
  • L3 Axiom Distillation — Promotes high-stability memories into judgment principles (axioms.md)
  • Dream Cycle — L2 + L3 run together at a configurable hour when the system is idle and enough observations have accumulated
  • Memory Recall — TF-IDF search with temporal decay injects relevant memories into the system prompt
  • Reflect Tool — The agent can proactively trigger reflection when meaningful work is completed
  • SOP-Driven Prompts — Memory pipeline rules are maintained in an external SOP document for easy tuning

User Identity

  • Owner Profileowner.md is read-only and defines the workspace owner with channel identifiers
  • User Profilesremember_user tool creates and updates profiles for other users (users/*.md)
  • ACL — Owner and admin roles control access to sensitive operations (e.g., /clean, /reset)
  • Multi-Channel Identity — Users are tracked by channel-specific identifiers (WeChat ID, WeCom ID, CLI)

Tools

  • Filesystemread, write, edit, glob (sandboxed to working directory)
  • Shellbash execution with optional background mode for long-running commands
  • Webweb_search and web_fetch for real-time information retrieval
  • Memorymemory_search for explicit recall, reflect for on-demand reflection
  • Skillsload_skill dynamically loads built-in and user-defined skill guides

Task Planning

  • Story / Task DAG — Two-level planning: stories (epics) contain tasks with dependency tracking
  • Kanban Boardtask_board_overview, task_board_detail for status visualization
  • State Machine — Tasks flow through pendingin_progressin_reviewcompleted / failed
  • Persistent Storage — JSON files under .pip/agents/<id>/tasks/ survive across sessions

Multi-Agent Team

  • Teammate Spawningteam_spawn creates 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.json defines available models for teammate assignment
  • Per-Agent Isolation — Each agent has its own data directory, TeamManager, and WorktreeManager
  • CLI Commands/team for roster status, /inbox to peek the lead inbox

Git Worktree Isolation

  • Isolated Branches — Each subagent works in its own git worktree (.pip/.worktrees/{name}/, branch wt/{name})
  • Sync / Integrate / Cleanup — Worktree lifecycle management with merge conflict detection
  • Task Submissiontask_submit syncs 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, conversation is replaced with an LLM-generated summary
  • Transcript Persistence — Every conversation turn saves a timestamped JSON transcript; old transcripts are cleaned up after reflection

Built-in Skills

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

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 ".[dev]"

Usage

# Navigate to your target project and run
cd /path/to/your/project
pip-boy

# 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 the .pip/ directory structure, .env (from template), and .gitignore entries. 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

Environment Variables (.env)

Variable Required Default Description
ANTHROPIC_API_KEY Yes Anthropic API key
ANTHROPIC_BASE_URL No (api.anthropic.com) Custom API endpoint (proxy support)
SEARCH_API_KEY No Tavily API key; falls back to DuckDuckGo
WECOM_BOT_ID No WeCom bot ID for enterprise WeChat channel
WECOM_BOT_SECRET No WeCom bot secret
VERBOSE No true Verbose output
PROFILER_ENABLED No false Enable performance profiling

Memory Pipeline

Variable Default Description
REFLECT_TRANSCRIPT_THRESHOLD 10 New transcripts needed to trigger reflection
TRANSCRIPT_RETENTION_DAYS 7 Days to keep reflected transcripts
DREAM_HOUR 2 Local hour (0-23) for the Dream cycle
DREAM_MIN_OBSERVATIONS 20 Minimum observations before Dream can run
DREAM_INACTIVE_MINUTES 30 Agent idle time (minutes) required for Dream

Per-Agent Configuration

Model, token limits, and compaction settings are configured per-agent via YAML frontmatter in .pip/agents/<id>/persona.md:

---
model: claude-sonnet-4-6
max_tokens: 8192
compact_threshold: 50000
compact_micro_age: 3
---

Project Directory Structure

.pip/
├── owner.md                     # Owner profile (read-only)
├── models.json                  # Model catalog for team spawning
├── .scaffold_manifest.json      # Scaffold version tracking
├── agents/
│   ├── bindings.json            # Channel → agent routing
│   └── pip-boy/                 # Per-agent directory
│       ├── persona.md           # Agent persona + config (YAML frontmatter)
│       ├── state.json           # Memory pipeline state
│       ├── memories.json        # L2 consolidated memories
│       ├── axioms.md            # L3 judgment principles
│       ├── observations/        # L1 observation files (.jsonl)
│       ├── transcripts/         # Conversation transcripts (.json)
│       ├── users/               # User profiles (.md)
│       ├── tasks/               # Task board state
│       └── team/                # Teammate data + inbox
└── .worktrees/                  # Git worktree isolation

Dependencies

License

This project is licensed under the MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pip_boy-0.2.0.tar.gz (131.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pip_boy-0.2.0-py3-none-any.whl (104.5 kB view details)

Uploaded Python 3

File details

Details for the file pip_boy-0.2.0.tar.gz.

File metadata

  • Download URL: pip_boy-0.2.0.tar.gz
  • Upload date:
  • Size: 131.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pip_boy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 63ad9c4d37c4e1b0189f1d4a932024ff26ac795e08725fc274f3defbf46ec765
MD5 b93f6992687907ec5e2a9e75f982d9e9
BLAKE2b-256 9cac5bc3298c0a3e863bb88160f1b56c2e3c0aac95814a8f2a82dd8dba0c14c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pip_boy-0.2.0.tar.gz:

Publisher: publish.yml on ByeDream/Pip-Boy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pip_boy-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pip_boy-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 104.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pip_boy-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4687cac0fb96b75e6bc4c0b4d5207bbd224f991fa3034b602f81d499c331aa7e
MD5 08cc1766540c33b58a0fc1938ff1adcf
BLAKE2b-256 5c2ba482011360ddb36025314792e97cb23909da1f329b47b32c119e5111bb7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pip_boy-0.2.0-py3-none-any.whl:

Publisher: publish.yml on ByeDream/Pip-Boy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page