pi-troupe
Pi-native TinyTroupe-style persona/world simulation using your active Pi model subscription.
Package details
Install pi-troupe from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-troupe- Package
pi-troupe- Version
0.2.0- Published
- Jun 5, 2026
- Downloads
- not available
- Author
- denismrvoljak
- License
- MIT
- Types
- extension
- Size
- 107.5 KB
- Dependencies
- 0 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
Pi Troupe
Pi Troupe is a Pi extension for running LLM-powered simulations: focus groups, surveys, interviews, UX tests, brainstorming sessions, market research sketches, and small persona worlds.
It lets you ask simulated people to review product ideas, roast docs, test landing pages, critique ad creative, debate pricing, inspect screenshots, or surface risks before you spend time building the wrong thing.
Features:
- guided
/troupesetup for common simulation types - ready-made demos like
roast-my-readme, pricing surveys, ad tests, and onboarding UX tests - explicit personas with roles, goals, traits, and constraints
- local run artifacts: prompt, report, event log, manifest, CSV, JSONL
- survey batching with response exports
- visual inputs through screenshot/image paths
- share cards for posting results without leaking local paths
Pi Troupe is inspired by Microsoft TinyTroupe. TinyTroupe showed how useful LLM personas and small worlds can be. Pi Troupe is not a fork or wrapper; it brings the pattern into Pi so you can use your existing Pi model subscription/config instead of wiring separate API-token simulations.
Synthetic feedback, not real research. Use it to find blind spots, draft hypotheses, and design better real user tests.
Setup
pi install npm:pi-troupe
pi
Local development install:
pi install /Users/denis/programming_personal/pi-troupe
Quickstart: roast your README
From any project with a README.md:
/troupe demo roast-my-readme
Pi Troupe reads the README, creates a small panel, and returns blunt feedback from simulated developer personas.
You can also pass a public landing page URL. Pi Troupe will fetch page text first, then run a text-only landing page/ad critique:
/troupe https://example.com/
Useful follow-ups:
/troupe templates
/troupe status
/troupe logs
/troupe share
Example: README roast
Pi Troupe can read your current README.md, create a small panel, and return blunt feedback.
/troupe demo roast-my-readme
Example output from a roast run:
Impatient Hacker: “I get it fast: simulated people roast my stuff before I waste time. That is useful. But show me one command, one output snippet, one ‘ouch, that helped’ example immediately.”
Skeptical Engineer: “The value proposition is clear enough, but the trust model is thin. For a simulation tool, data handling is not a footnote.”
Indie Builder: “This is aimed at me. Landing pages, pricing, docs, onboarding tests — that is exactly the pre-build feedback loop I want.”
OSS Maintainer: “The Pi subscription/config angle is the biggest differentiator. Make it a headline: no separate API-token plumbing, model config reuse, Pi-native install and commands.”
Typical findings:
- Core idea is understandable: LLM-powered simulated personas for feedback before real research.
- Strongest line: “surface risks before you spend time building the wrong thing.”
- Pi subscription/config benefit matters; do not bury it.
- Safety is good, but say what leaves your machine and where artifacts are written.
Full sample: examples/roast-my-readme.sample.md.
Try a landing page URL
Pass a public URL directly:
/troupe https://your-landing-page.com/
Pi Troupe fetches the page text, extracts the title, meta description, headings, CTA/link text, and readable body copy, then runs a landing-page/ad critique on that content.
Good things to try:
/troupe https://your-landing-page.com/— broad landing page critique/troupe review this pricing page: https://your-site.com/pricing— pricing clarity and objections/troupe test this ad landing page for skeptical buyers: https://your-site.com/— audience-specific critique/troupe compare the CTA and trust signals on https://your-site.com/— focused copy review
URL review fetches page content automatically. For visual critique, Pi Troupe can use screenshots too:
- If your Pi workflow has the separate Playwright browser tool available, it can capture a screenshot and pass it to Pi Troupe.
- If not, provide a local screenshot path yourself, for example:
/troupe review this landing page screenshot: ./homepage.png.
What you can simulate
- README or docs roast
- landing page URL review
- landing page focus group
- pricing survey
- ad creative test
- screenshot usability test
- Product Hunt launch roast
- feature prioritization debate
- onboarding UX test
- custom interview, survey, brainstorm, or small world
Why use this instead of plain chat?
- Personas stay explicit: roles, goals, fears, constraints.
- Disagreement is expected: panel members push against each other.
- Runs are logged: prompt, events, report, manifest, exports.
- Pi-native: child
pi -pruns use your configured provider/model. - Safer boundary: child simulations run with
--no-tools --no-session. - Shareable:
/troupe sharecreates compact copy without local paths.
Relation to Microsoft TinyTroupe
Microsoft TinyTroupe explores LLM-powered personas living in simulated worlds.
Pi Troupe borrows that mental model, but focuses on Pi workflows:
| Microsoft TinyTroupe | Pi Troupe |
|---|---|
| Python simulation framework | Pi extension/package |
| Rich agents and worlds | Developer-facing focus groups, surveys, roasts |
| Separate setup/API wiring | Uses your active Pi model setup |
| General simulation toolkit | Fast product/docs/UX critique inside Pi |
Pi Troupe is independent and not affiliated with Microsoft.
Commands
| Command | Purpose |
|---|---|
/troupe |
guided TUI flow |
/troupe <request> |
natural-language simulation |
/troupe demo [id] |
run bundled template |
/troupe templates |
list templates |
/troupe status |
list recent runs |
/troupe logs [id] |
inspect state/events/report |
/troupe share [id] |
generate share card |
/troupe export [csv|jsonl] [id] |
print response export |
Demo templates
/troupe demo roast-my-readme
/troupe demo pricing-survey
/troupe demo ad-creative-test
/troupe demo screenshot-usability-test
/troupe demo product-hunt-launch-roast
/troupe demo pricing-page-review
/troupe demo landing-page-focus-group
/troupe demo feature-prioritization
/troupe demo onboarding-ux-test
More recipes: docs/RECIPES.md.
Safety and limits
Pi Troupe generates synthetic feedback from LLM personas. It does not replace interviews, usability tests, security review, analytics, or market research.
Default boundary:
- Child simulations run as
pi -p --no-tools --no-session. - Personas cannot execute tools in child runs.
- Logs are local by default under
~/.pi/troupe/.... - Prompt content, fetched URL text, pasted text, and attached images may be sent to your configured Pi model/provider.
- Run artifacts are written locally under the log directory.
- Outputs are hypotheses, not evidence.
- Avoid sending secrets or private user data unless your configured provider/model is appropriate for that data.
Read docs/SAFETY.md and docs/EVALS.md.
Artifacts
Each run writes:
~/.pi/troupe/<project-slug>/runs/<run-id>/
state.json
events.jsonl
prompt.md
report.md
manifest.json
responses.csv
responses.jsonl
survey-manifest.json
Override root:
PI_TROUPE_DIR=/tmp/pi-troupe pi
Development
npm install
npm run check
npm run pack:smoke
Release
npm run check
npm run pack:smoke
npm publish --access public
License
MIT