Prompt templates
A template is a prompt with placeholders, a directory and the agent's rights. It is run with text, files and photos — from the interface with your own key, via a secret link with no login, or with a single POST request. The typical case is "uploaded a video, got an improved one": the prompt calls a skill, the skill puts the result into the run's directory, the page hands it over for download.
The "Templates" screen opens with an icon on the home screen and in the app's side panel.
What it is made of
- A prompt with placeholders.
{{prompt}}is the person's text,{{files}}the paths of the files sent,{{in}}and{{out}}the run's directories. Any other{{name}}becomes a field of the run form with its own label and default value. - The directory, model, permission mode and tool set — what the agent works with.
- Whether to answer the model's questions automatically. On — a run doesn't stop on a question, the first (recommended) option is taken. Off — the question goes to whoever started the run.
Every run is an ordinary Claude Code chat: it shows up in the chat list marked "template" or "via link", and the owner opens it with the whole feed. What was sent lies in in/, the agent puts the result into out/ — both inside the template directory's .clauder/templates/.
Who can do what
- Creates and edits templates: the owner (and a key without restrictions) — a template sets the agent's directory and rights.
- Runs them: a key the template was granted to — the access key settings mark which templates it sees. A guest doesn't see the prompt, the directory or the rights.
- A run's rights are the stricter of two: the template's and those of the key that ran it or issued the link.
A secret link
The "Links" tab issues a link to run without logging in — for an hour, a day, a week, 30 days or a custom time, but not longer than the key's own lifetime. Whoever gets it sees only the run form, their own messages, the text of the replies and the files from out/ — no tools, no machine paths. The history of runs through the link is shared and stays visible after it expires; a revoked link stops answering at once.
Webhook
Every secret link has a second entrance — a run with a single POST request, no form. For CI, monitoring, your own scripts. The "Webhook" button in the link list shows the address and a ready curl; on Android it is "Copy webhook".
curl -X POST "http://<machine>:<port>/api/t/<token>/hook?env=prod" \
-H "Content-Type: application/json" \
-d '{"prompt": "Build a report on the logs from yesterday"}'- The text is the
prompt(ortext) field of the JSON. Without it the request body itself goes to the model: it will make sense of an event from GitHub or monitoring on its own. - Template fields come from same-named body keys, or, if the service doesn't let you shape the body, from query parameters.
- Rights, lifetime and revocation are the link's, and the run goes into its history.
- At most 30 runs an hour per link — protection against a "CI triggers itself" loop.
The answer is 202 with the run's id, the address of its status and a page where the work can be watched.