@e9n/pi-personal-crm
Personal CRM extension for pi — contacts, companies, interactions, and reminders
Package details
Install @e9n/pi-personal-crm from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@e9n/pi-personal-crm- Package
@e9n/pi-personal-crm- Version
0.2.1- Published
- Apr 26, 2026
- Downloads
- 161/mo · 149/wk
- Author
- e9n
- License
- MIT
- Types
- extension
- Size
- 207.4 KB
- Dependencies
- 1 dependency · 3 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@e9n/pi-personal-crm
Personal CRM extension for pi. Manage contacts, companies, interactions, and reminders — all from the terminal or a web dashboard.
Features
- Contacts — full profiles with emails, phones, custom fields, and company association
- Companies — organization records with member contacts
- Interactions — timeline of calls, meetings, emails, notes, gifts, and messages
- Relationships — link contacts to each other with labeled relationships
- Groups — tag contacts into named groups
- Reminders — birthdays, anniversaries, and custom reminders with upcoming view
- Fuzzy search — typo-tolerant search across contacts and companies
- Extension fields — third-party extensions can attach read-only data to contacts/companies
- CSV import/export — bulk import with duplicate detection
- Web dashboard — 6-page UI (Contacts, Companies, Groups, Interactions, Reminders, Upcoming)
Setup
Add to ~/.pi/agent/settings.json or .pi/settings.json:
{
"pi-personal-crm": {
"dbPath": "db/crm.db"
}
}
| Key | Default | Description |
|---|---|---|
dbPath |
"db/crm.db" |
SQLite file path (relative to agent dir, or absolute) |
useKysely |
false |
Use shared pi-kysely DB instead of local SQLite |
Tool: crm
Manages all CRM entities. Pass action plus the relevant fields.
Actions
| Group | Actions |
|---|---|
| Contacts | search, contact, add_contact, update_contact, delete_contact |
| Interactions | log_interaction |
| Reminders | add_reminder, upcoming |
| Relationships | add_relationship |
| Companies | list_companies, add_company |
| Groups | list_groups, add_to_group, remove_from_group |
| Import/Export | export_csv, import_csv |
Key Parameters
| Parameter | Type | Description |
|---|---|---|
action |
string | Action to perform (required) |
query |
string | Search query (for search) |
contact_id |
number | Contact ID (for contact, update_contact, log_interaction, add_reminder) |
name |
string | Contact name — alternative to contact_id for contact action |
first_name / last_name |
string | Contact name fields |
email / phone |
string | Primary email / phone |
company_name |
string | Company association |
interaction_type |
string | call, meeting, email, note, gift, message |
summary |
string | Interaction summary (required for log_interaction) |
reminder_type |
string | birthday, anniversary, custom |
reminder_date |
string | ISO date for the reminder |
Commands
| Command | Description |
|---|---|
/crm-web [port] |
Start standalone web UI (default port 4100) |
/crm-web stop |
Stop the standalone server |
/crm-web status |
Show whether CRM is running standalone or via pi-webserver |
/crm-export |
Export all contacts to crm-contacts.csv |
/crm-import <path> |
Import contacts from a CSV file |
Web UI
The dashboard (crm.html) auto-mounts at /crm when pi-webserver is installed. Use /crm-web to start a standalone server on port 4100.
Install
pi install npm:@e9n/pi-personal-crm
License
MIT