Skip to main content

Getting Started with ULPI Hooks

One command. Automatic configuration. All 8 lifecycle hooks active in under 5 minutes. This guide walks you through installing ULPI Hooks and verifying they’re working correctly.

Prerequisites

Before installing Hooks, ensure you have:

ULPI Account

Sign up at app.ulpi.io if you haven’t already

API Token

Generate an API token from your API Keys page

Coordination Subscription

Hooks require an active Coordination subscription (Starter $29/mo or higher)

Compatible IDE

Claude Code, Cursor, or Windsurf installed (full support for all 8 hooks)
Bundle Discount: Coordination + Memory subscriptions include Hooks FREE. See pricing for details.

Installation

Step 1: Install the ULPI Package

The ULPI package includes the CLI, MCP bridge, and all 8 lifecycle hooks in one install:
Why global? Global installation makes the ulpi command available everywhere, simplifying setup across multiple projects.

Step 2: Run the Guided Setup Wizard

The setup wizard automatically detects your installed IDEs and configures hooks for each:
1

Enter API Token

When prompted, paste your ULPI API token:
Get your API token from app.ulpi.io/api-keys
2

Select IDEs

The wizard scans your system and lists detected IDEs:
Select all IDEs you want to use with ULPI Hooks.
3

Configure Hook Settings

Choose your hook behavior preferences:
Recommended: Accept defaults (Yes for all except debug logging)
4

Automatic Configuration

The wizard creates config files for each selected IDE:
Manual Setup Not Required: The wizard handles all configuration automatically. You don’t need to edit config files manually unless customizing behavior.

Step 3: Restart Your IDE

For hooks to take effect, restart each IDE you configured:

Verify Hooks Are Working

After restarting your IDE, verify hooks are active:

1. Check Hook Status

Run the status command to see active hooks:
Expected output:

2. Test Session Start Hook

Open your IDE and start a new chat session. You should see a coordination dashboard:
If you see this dashboard: Session-start hook is working! ✅

3. Test Pre-Edit Hook (File Conflict Prevention)

Try editing a file that another agent has reserved:
1

Identify Reserved File

From the coordination dashboard, note a file reserved by another agent (e.g., auth.ts reserved by Alice)
2

Attempt to Edit

In your IDE, try to modify that file. The pre-edit hook should block you:
3

Verify Blocking

The edit should be prevented, and you should see the blocking message.
If editing was blocked: Pre-edit hook is working! ✅

4. Test File Reservation (Auto-Reserve)

Edit a file that’s NOT reserved by anyone:
1

Edit Unreserved File

Open and modify any file not shown in the active reservations list
2

Check Reservation

After saving, run:
You should see your new reservation:
3

Verify Auto-Reservation

If your file appears in the list: Auto-reservation is working! ✅

5. Test User-Prompt Hook (Message Alerts)

Have another agent (or yourself from another IDE) send you an urgent message:
1

Send Urgent Message

From another IDE or via CLI:
2

Submit Prompt

In your IDE, type any message to your AI assistant and press Enter
3

Check for Alert

Before the AI responds, you should see an urgent message alert:
4

Verify Alert Display

If you see the alert: User-prompt hook is working! ✅

Hook Configuration

All hooks are configured in ~/.ulpi/config.json. You can customize behavior:
~/.ulpi/config.json

Common Customizations

Set "enabled": false for any hook you don’t want:
Switch between shared (multiple readers) and exclusive (one writer):
See detailed hook execution logs:
Logs appear in your IDE’s terminal/console.
Control which memories are saved during compaction:
Restart Required: After changing config, restart your IDE for changes to take effect.

Troubleshooting

Hooks not activating after restart

Symptoms: No coordination dashboard on session start, edits not checking reservations Solutions:
  1. Verify installation: ulpi hooks status
  2. Check API token is valid: ulpi auth verify
  3. Ensure Coordination subscription is active
  4. Check hook config file exists: ls ~/.ulpi/config.json
  5. Enable debug logging and check for errors

”Token invalid” error during setup

Symptoms: Setup wizard rejects your API token Solutions:
  1. Generate a new token at app.ulpi.io/api-keys
  2. Ensure token has full permissions (not read-only)
  3. Copy token carefully (no extra spaces)
  4. Try manual configuration: ulpi config set apiToken=<token>

Pre-edit hook not blocking conflicts

Symptoms: You can edit files reserved by other agents Solutions:
  1. Check preEdit.blockConflicts is true in config
  2. Verify you’re connected to Coordination: ulpi coordination status
  3. Ensure reservation exists: ulpi coordination list-reservations
  4. Check debug logs for hook execution errors

Session-start hook too slow

Symptoms: IDE takes 5+ seconds to start sessions Solutions:
  1. Disable dashboard display: sessionStart.showDashboard = false
  2. Don’t load all memories: sessionStart.loadMemories = false
  3. Check network latency to ULPI API
  4. Ensure you’re on a stable internet connection

Hooks work in one IDE but not another

Symptoms: Cursor hooks work, but Claude Code hooks don’t (or vice versa) Solutions:
  1. Run ulpi setup again and select all IDEs
  2. Check IDE-specific config files were created
  3. Verify IDE supports lifecycle hooks (see compatibility)
  4. Update IDE to latest version

Advanced: Manual Hook Installation

If the guided setup doesn’t work, you can install hooks manually:
1

Create Config Directory

2

Create Config File

3

Install IDE-Specific Hooks

4

Verify Installation


Next Steps

Now that hooks are installed and working, explore their capabilities:

Lifecycle Events Deep Dive

Learn exactly when each hook fires and what MCP tools it uses

File Conflict Prevention

Master the pre-edit hook and achieve zero merge conflicts

Memory Integration

Preserve context automatically with pre-compact memory snapshots

Real-World Use Cases

See how teams use hooks to coordinate 3, 5, or 10+ agents