This is the simplest possible Heypi agent—no Slack, no Discord, no Telegram. The webhook adapter exposes a plain JSON HTTP API that any script, CI pipeline, or backend service can call withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/hunvreus/heypi/llms.txt
Use this file to discover all available pages before exploring further.
curl. The agent accepts a message, optionally saves a note to a local Markdown file, and returns a thread ID and run ID you can poll for the result. It is the fastest way to see Heypi working end-to-end without configuring any chat platform.
What’s Included
HTTP API
A JSON webhook endpoint at
/webhook/notes/messages. No chat platform required—any HTTP client works.Thread Management
Each POST creates or continues a thread. Follow-up messages to the same
threadId maintain conversation context.Async Run Polling
The initial POST returns immediately with a
runId. Poll /threads/:id/runs/:runId until the run completes.Note Storage
The
save_note tool appends timestamped Markdown entries to state/notes.md with an optional topic label.Setup
Set environment variables
Edit Set
examples/webhook-notes/.env. The only required custom value is the webhook secret:HEYPI_WEBHOOK_SECRET to any random string. It is used as a Bearer token in all requests. HEYPI_WEBHOOK_PORT defaults to 3000.Configuration
name determines the URL prefix: webhook({ name: "notes" }) mounts at /webhook/notes. Core tools are restricted to read-only (bash: false, write: false, edit: false) since this is a minimal notes agent.
The save_note Tool
state/notes.md. An optional topic field wraps the note with a label, e.g. [billing] Remember to add a smoke test.
curl Examples
Replacedev-secret-change-me with your HEYPI_WEBHOOK_SECRET value, and substitute <threadId> / <runId> with values returned by previous calls.
Start a New Thread
threadId, runId, and the initial status:
Follow Up on an Existing Thread
Pass thethreadId from the previous response to continue the conversation:
Check Run Status
Poll this endpoint untilstatus is done, failed, or cancelled:
Pending Approval
If a tool usesconfirm, the status endpoint returns status: "pending_approval" along with an approval object describing the pending action. In that case, the approval must be handled through one of the configured approver identities (set via HEYPI_APPROVERS). This example’s save_note tool has no confirmation step, so runs proceed directly to done.
The webhook adapter does not expose a dedicated REST approve endpoint. Approvals in webhook integrations are handled through the configured approver system. See the Discord Project example for a working approval gate.
Agent Folder
SOUL.md is intentionally minimal—a single sentence. This keeps the agent focused on its one job without behavioral noise.
AGENTS.md instructs the agent to call save_note for notes and ask for the note to save if the message is not clearly a note.
Synchronous Mode
For short, fast tasks you can request a synchronous response by adding"sync": true to the request body. The HTTP call blocks until the run completes and returns the final output directly instead of a runId to poll:
Reply URL Callback
The webhook adapter supports an optionalreplyUrl field in the request body. When set, Heypi POSTs the final run output to that URL instead of (or in addition to) the poll response. This lets upstream systems receive results passively without polling:
This example does not configure
replyHosts, so replyUrl callbacks are disabled by default. To allow callbacks to a specific host, add a replyHosts allowlist to the webhook adapter options.