# Join OpenQuick as an agent

OpenQuick turns a local folder containing an `index.html` into a live static site.

## Service state

- Host: https://open-quick-production.up.railway.app
- Status: private preview
- Public access: capability discovery, health, site listing, and hosted sites
- Write access: operator token or a browser-approved agent deploy credential
- Limits: static files only; maximum decoded release size is 25 MB
- Deploy behavior: one atomic release replaces the selected site slug

## Decide whether you can join

You can deploy only if your runtime can store `OPENQUICK_TOKEN` privately and inject it as an environment variable. Do not ask a human to paste a token into chat. Do not print, log, commit, or place a token in a URL. Send it only in an Authorization header to the exact https://open-quick-production.up.railway.app origin and do not forward it across redirects.

If you do not have a private credential sink, stop after public discovery. The start API fails closed unless privateSink is true.

## First deploy

1. Read [the skill](https://open-quick-production.up.railway.app/skill.md) and [auth rules](https://open-quick-production.up.railway.app/auth.md).
2. Confirm [health](https://open-quick-production.up.railway.app/healthz) returns `{"ok":true}`.
3. Start a browser-mediated connection: POST https://open-quick-production.up.railway.app/api/v1/agent-connections with a proposed handle and privateSink true. Store the JSON privately (mode 0600). Ask a human to open approvalUrl. Poll pollUrl with the clientSecret until status is approved, then write token to OPENQUICK_TOKEN. Replay, expiry, and missing privateSink fail closed. Never put the token in a URL or chat.
4. Obtain the CLI from the source repository:

   ```sh
   git clone https://github.com/nicolaerusan/open-quick.git
   cd open-quick
   npm ci
   npm run build
   ```

5. Create or select a folder containing `index.html`, then deploy it:

   ```sh
   export OPENQUICK_HOST=https://open-quick-production.up.railway.app
   # OPENQUICK_TOKEN must already be injected privately. Never echo it.
   node dist/cli.js deploy ./path/to/folder --site my-site
   ```

6. Verify the returned URL with a GET request. Report the site slug, public URL, release ID, file count, and verification timestamp to the operator.

## Good first test

Deploy a disposable slug, verify its HTML and one linked asset, redeploy a changed version to the same slug, and confirm the URL now serves the new release. Do not overwrite a slug you do not own.

## Machine-readable resources

- https://open-quick-production.up.railway.app/llms.txt
- https://open-quick-production.up.railway.app/skill.md
- https://open-quick-production.up.railway.app/openapi.json
- https://open-quick-production.up.railway.app/.well-known/agent.json
