Skip to main content

Stateful Technical PM Agent — multi-project CLI with persistent per-project context

Project description

PM-Agent

Stateful Technical PM Agent — a CLI tool that brings persistent project-management context to AI-assisted development. Each project gets its own configuration, memory, decision log, and action audit trail in a local SQLite database.

Status

Alpha — under active development. The CLI is stable for daily use; the schema and API may change before a 1.0 release.

Key Concepts

my-project/
  .pm-agent/        ← created by `pm-agent init`
    project.toml    ← machine-readable project config (commit this)
    memory.md       ← human-editable notes (commit this)
    state.db        ← SQLite state DB (gitignored, auto-created)
    logs/           ← action error logs (gitignored)

Project Discovery

pm-agent walks up from your current directory looking for .pm-agent/. If found, that directory becomes the project root. If not found, it looks for a .git directory as a fallback. This means:

  • Run pm-agent status from any subdirectory of your project.
  • Pass --project-root /path to pin an exact root (bypasses discovery).
  • Pass --repo /path to set a different starting point for discovery.

Commands

Command Description
pm-agent init Initialize .pm-agent/ in the current repo
pm-agent / pm-agent repl Start the interactive REPL
pm-agent status Show project state and active config
pm-agent doctor Check environment, config, and permissions
pm-agent spec show Display the project specification
pm-agent memory show Display project memory
pm-agent memory add <text> Append a dated memory entry
pm-agent migrate Import legacy global DB into .pm-agent/state.db

Installation

Requires Python 3.12+ and an OpenAI-compatible chat endpoint (Ollama, OpenAI, or any compatible API).

Quick install (recommended)

Linux / macOS:

curl -fsSL https://raw.githubusercontent.com/sm-me-dev/pm-agent/main/scripts/install.sh | bash

To pin a version:

PM_AGENT_VERSION=0.3.0 curl -fsSL https://raw.githubusercontent.com/sm-me-dev/pm-agent/main/scripts/install.sh | bash

Windows (PowerShell):

irm https://raw.githubusercontent.com/sm-me-dev/pm-agent/main/scripts/install.ps1 | iex

To pin a version:

$env:PM_AGENT_VERSION = "0.3.0"; irm https://raw.githubusercontent.com/sm-me-dev/pm-agent/main/scripts/install.ps1 | iex

Security note: piping from the web to your shell is convenient but skips normal verification. Review the script before running:

The installer detects or installs pipx and uses it to install pm-agent into an isolated environment.

pipx (any platform)

pipx install product-manager-agent

From source

git clone https://github.com/sm-me-dev/pm-agent.git
cd pm-agent
pip install -e ".[dev]"

Verify

pm-agent --help

Quickstart

cd /path/to/your/repo
pm-agent init            # creates .pm-agent/
pm-agent                 # starts the REPL
pm-agent status          # inspect project state
pm-agent doctor          # run diagnostics
pm-agent migrate         # import legacy data if you used pm-agent before v0.3

Configuration Precedence

  1. CLI flags (--model, --db, --repo, etc.)
  2. Environment variables (PM_AGENT_*)
  3. .pm-agent/project.toml (per-project)
  4. ~/.config/pm-agent/config.toml (user-global)
  5. Built-in defaults

Key Environment Variables

Variable Default Description
PM_AGENT_MODEL glm-5.2 Model name
PM_AGENT_BASE_URL http://localhost:11434/v1 API endpoint
PM_AGENT_API_KEY API key
PM_AGENT_HISTORY_LIMIT 75 Messages in context window
PM_AGENT_ALWAYS_APPROVE false Auto-approve all actions

Project Config (project.toml)

[project]
name = "my-project"
language = "python"
test_command = "pytest"
lint_command = "ruff check"
build_command = ""

[constraints]
allowed_paths = []
approval_default = "prompt"
blocked_actions = []

[paths]
# context_dir = ""
# error_log_path = ""

Migration from Legacy Global DB

If you previously used pm-agent with a global state database at ~/.local/share/pm-agent/state.db, migrate to project-local storage:

cd /path/to/your/repo
pm-agent init       # one-time setup
pm-agent migrate    # copy existing data into .pm-agent/state.db

The migration is idempotent — running it multiple times is safe.

Safety

  • Repository access is read-only by default.
  • External actions require per-payload approval (configurable via rules).
  • All actions are logged with an immutable audit trail.

Development

git clone https://github.com/sm-me-dev/pm-agent.git
cd pm-agent
pip install -e ".[dev]"
pytest

See CONTRIBUTING.md for full development workflow.

Release

See RELEASE.md for the release process.

License

MIT

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

product_manager_agent-0.3.11.tar.gz (86.5 kB view details)

Uploaded Source

Built Distribution

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

product_manager_agent-0.3.11-py3-none-any.whl (99.3 kB view details)

Uploaded Python 3

File details

Details for the file product_manager_agent-0.3.11.tar.gz.

File metadata

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

File hashes

Hashes for product_manager_agent-0.3.11.tar.gz
Algorithm Hash digest
SHA256 f378c89cfcbb213b5c28cb5d57e3694025e1bdf20e507e54c9bb8b9923256cd0
MD5 8a6f6423d98213ae50ca360b769857e7
BLAKE2b-256 19575f31da23af6ec43d36cd8ad874ae954d56d7c628b758b7a1f4fba075c5e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for product_manager_agent-0.3.11.tar.gz:

Publisher: release.yml on sm-me-dev/pm-agent

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

File details

Details for the file product_manager_agent-0.3.11-py3-none-any.whl.

File metadata

File hashes

Hashes for product_manager_agent-0.3.11-py3-none-any.whl
Algorithm Hash digest
SHA256 16b767c9c8b259a367ad0524b69206f838e741b3032539306cac51f0c5332e22
MD5 414ab74bfc92ed4e9d7f1ede1224495c
BLAKE2b-256 ec83cad302c405c241f9e044b093f81ff5cc6b25e55d37d5d799409333f10a11

See more details on using hashes here.

Provenance

The following attestation bundles were made for product_manager_agent-0.3.11-py3-none-any.whl:

Publisher: release.yml on sm-me-dev/pm-agent

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