Toupas for coding agents
Toupas makes the app on the user's computer live, at a link anyone can open. The user isn't expected to know anything about servers or deployment, so don't ask them for deployment details: Toupas works them out.
Make the app live
Call toupas_make_live with dir, the absolute path of the app's folder. It signs the user in if needed, works out how to prepare the app, writes toupas.json, prepares the app (in Docker for apps with their own server), sends only changed files, waits until the new version is live, and returns the link. Calling it again updates the live app.
The first time, it may stop and return:
askUser: a question only the user can answer (copy local data or start empty; Toupas storage or their own). Ask it in its own words, wait for the answer, then calltoupas_make_liveagain with the matching argument (copyLocalData,startEmpty,useToupasStorage,keepOwnStorage). Never answer it yourself.agentInstructions: something for you to do first, e.g. switch the app from SQLite to Postgres (E_LOCAL_DATA_STORAGE), or ask the user to install Docker Desktop (E_DOCKER_MISSING, thentoupas_setup_docker).- A sign-in link (
E_SIGN_IN_REQUIRED): give it to the user; once they've approved it, call the tool again. status: "in_progress": preparing is taking a while. Calltoupas_make_liveagain with the samedir: it keeps waiting for the same run, it doesn't start over.
Words to use with the user
Say "make live", "update the live app", "app", "version", "settings". Avoid "deploy", "deployment", "project", "container", "environment variable" unless the user uses them.
After it's live
- Something wrong:
toupas_get_deployment(did the latest version go live, and why not) andtoupas_get_logs(what the app printed). - Settings and secrets:
toupas_list_env,toupas_set_env(secret: truefor passwords and keys),toupas_unset_env. Don't put secrets in code or in.envfiles that get uploaded;.envfiles never go live. - Data:
toupas_get_database,toupas_db_query; files:toupas_get_storage,toupas_list_files. - Links:
toupas_get_links, custom names (toupas_set_subdomain) and the user's own domains (toupas_add_domain). These are paid; the answer then includes a link for the user to pay in their browser. - Plan and trial:
toupas_get_project,toupas_get_usage,toupas_activate_project,toupas_get_billing.
Rules
- Payments always happen in the user's browser. Give them the link; never open it or pay yourself.
- Tools that delete or take things offline take
confirm. Without it they only describe what would happen: show that to the user, and call again withconfirm: trueonly if they agree. - The same can be done in a shell with
toupas <command> --json;toupas helplists the commands. Long-running things (toupas db tunnel,toupas dev db,toupas logs --follow) are only in the shell.