For AI agents
heremyapp is built to be used by coding agents (Claude Code, Codex, Cursor and others) with nothing more than a shell:
curl, tar and shasum. No SDK or plugin is required.
For people: what to tell your agent
Give the agent a token first (see Authentication), then ask in plain words, for example:
Deploy this project's landing page to heremyapp. Read https://heremyapp.com/llms.txt first.Build MyApp.pkg, publish it on heremyapp as the app's current version, and point the landing page's
download button at it. Read https://heremyapp.com/docs/installers.md and https://heremyapp.com/docs/sites.md first.Every docs page has a "Copy Markdown" button, so you can also paste a page straight into the conversation.
Agent skill
Agents that support skills (for example Claude Code) can install the heremyapp skill:
mkdir -p ~/.claude/skills/heremyapp && curl -fsSL https://heremyapp.com/skill.md -o ~/.claude/skills/heremyapp/SKILL.mdMachine-readable discovery
| URL | What it is |
|---|---|
https://heremyapp.com/llms.txt |
Index of these docs (llms.txt) |
Any docs page with Accept: text/markdown |
The page as Markdown, same as adding .md |
https://heremyapp.com/openapi.json |
OpenAPI 3.1 description of the API |
https://heremyapp.com/.well-known/api-catalog |
API catalog (RFC 9727) pointing to the API, its spec and docs |
https://heremyapp.com/.well-known/agent-skills/index.json |
Agent Skills index with the heremyapp skill |
https://heremyapp.com/.well-known/auth.md |
How agents authenticate |
Pages also send Link headers to these resources.
Recommended workflow
- Resolve the token (
HEREMYAPP_TOKEN, then~/.config/heremyapp/token, else ask the user) and callGET /me. Noteaccount.username. If the token scope isspace, use the space fromGET /spaces. - Create the space, or reuse it on
409 space_exists. - Check versions:
GET /spaces/SPACE/versions(Releases and versioning). Decide the bump from what changed, without asking the user. - Contact details: if
contact_statusisunknown, ask the user once (skipping is fine) and save the answer (Landing page checklist). - If there is an installer: set the next version and build in the project, build, check its signature (macOS:
spctl; ask the user if it fails), then publish it withversion,buildandnotes(Installers). The latest link ishttps://heremyapp.com/dl/ACCOUNT/SPACE/latest/FILENAME. - Prepare the site with the Landing page checklist: content, often-missed items, languages, contact
details, and the app's version, size and release notes. If a landing page exists, update it instead of replacing it.
A new site gets
/privacyand/termsfrom the templates, linked from every page (Privacy policy and terms). - Deploy the site with
bumpandnotes(Static sites). Read the response'sadvicelist, fix what applies, and deploy again if needed. - Verify: the public URL returns 302 then 200 with the new
X-Heremyapp-Version, and the downloaded installer's SHA-256 matches the local file. - Report the public URL (
https://heremyapp.com/ACCOUNT/SPACE), the download link, and the new versions and build numbers.
Rules
- Never print, log or commit the token, and never put it into site files.
- Do not create accounts or guess tokens. If there is no token, ask the user.
- Share the public URL, not the site origin it redirects to.
- When a request fails, read
error.message: it says what to change.error.docslinks back to these docs. - Do not upload an installer that fails signature checks unless the user explicitly says so.
- Manage versions and build numbers yourself on every deploy; do not ask the user to choose them.
- Ask for contact details at most once per space; respect
skipped.
Troubleshooting
| Symptom | What to do |
|---|---|
Could not resolve host for a heremyapp host |
Usually a stale local DNS cache. Resolve it directly and pin it: IP=$(dig +short api.heremyapp.com @1.1.1.1 | head -1), then add --resolve api.heremyapp.com:443:$IP to curl. The user can clear the cache on macOS with sudo killall -HUP mDNSResponder. |
401 unauthorized |
The token is missing, mistyped, expired or revoked. Ask the user for a valid token. |
403 forbidden |
A space token was used for another space or for an account-only action. |
unsupported_file_type |
Remove the files listed in details.files from the site folder, or publish installers as artifacts. |
409 artifact_exists |
That version is already published. Use a new version. |