# Rig

> Rig is Kin's persistent computer: a browser and isolated shell beside Outpost. Use it for interactive sites that ordinary fetch tools cannot handle, while keeping logins and visual control available to a human.

Rig is Kin's persistent computer: a browser and isolated shell beside Outpost.
Use it for interactive sites that ordinary fetch tools cannot handle, while
keeping logins and visual control available to a human.

<!-- SOURCE: src/kin/rig/, src/kin/harness/tools/rig.py, src/kin/harness/defaults/agents/rig.md, container/dashboard/rig_api.py, container/dashboard/rig_proxy.py, container/dashboard/templates/landing_body.py, container/dashboard/templates/landing_js.py -->

## Outcome

Ask Kin to complete a bounded browser task, inspect what Rig is doing from
Outpost, take over for a login without exposing credentials, and return
control.

## Fast path

1. Ask Kin for a specific web outcome and name the site or starting URL.
2. Let the `rig` subagent navigate by roles and accessible names.
3. Open Outpost **Computer** to see status and recent semantic actions.
4. Choose **Load glance** only when a visual check is useful.
5. Choose **Open Rig** when a login, captcha, 2FA, or direct control is needed.
6. Take control, enter the credential yourself, then release or close the
   view so model actions can continue.

[![Outpost Computer showing healthy Rig status, recent actions, and a deterministic on-demand glance of a generic project board.](/docs-assets/kin/assets/screenshots/outpost_rig.png)](/docs-assets/kin/assets/screenshots/outpost_rig.png)

*Glance is click-to-load rather than an ambient screenshot stream. The desktop
rail also keeps the verified account and Sign out visible.*

## What Kin can do

Kin normally reads compact semantic snapshots and acts by role and accessible
name. The main browser actions navigate, snapshot, click, fill, select, press,
scroll, manage tabs, take an on-demand screenshot, and reset browser runtime
state. Desktop actions use the same tool for accessible applications.

For a contained multi-step trip, the bundled `rig` subagent keeps raw
snapshots in its child context and returns a distilled result. It records
durable machine-specific discoveries in Rig memory before finishing.

The separate `rig_shell` runs bounded commands in Rig's persistent shell
workspace. Shell networking is disabled by default, and the shell identity
cannot read the Chromium profile or service secrets.

## Credentials and human control

Never send a password through the model's fill or shell tools. An unknown
password field is refused before typing. **Open Rig** provides the intended
SSO-gated human path:

1. the view starts read-only;
2. **Take control** creates a time-bounded human hold;
3. model browser/desktop/shell mutations wait while that hold is active;
4. closing the connection releases the hold, with a TTL as crash backstop.

Password text never enters the model transcript or action journal. The browser
never receives Rig's bearer or hold-renewal token; Outpost keeps both
server-side.

## Persistence and observation

The browser profile, tabs, downloads, shell workspace, action journal, and Rig
memory survive ordinary Kin sessions and service restarts. **Computer** shows
health, login attention, recent redacted actions, semantic replay, and bounded
memory search.

Screenshots remain explicit. Semantic snapshots are the normal transport;
request a screenshot or set-of-marks only when spatial information materially
helps.

## Alternative methods

#### Direct tool


Kin can call `rig`, `rig_shell`, or `rig_memory` directly for a short,
already-bounded action.

#### Rig subagent


Prefer the `rig` profile for a multi-step excursion. It isolates raw page
state and returns one distilled answer.

#### Web tools


Use `web_fetch`, `web_search`, or `web_context` when JavaScript, persistent
login, and visual interaction are not required. They are cheaper and
simpler than a persistent computer.

## Troubleshooting

- **Rig says a human is driving:** release or close the Outpost control view;
  the hold also expires automatically.
- **A password fill is refused:** use **Open Rig** and type it directly.
- **Glance is empty:** check Rig status first, then explicitly load it again.
- **A page is unreachable:** production Rig refuses private, loopback,
  link-local, metadata, compose, and tailnet destinations.
- **The tools are absent:** Rig must be enabled with a valid global URL and
  token; project files cannot supply that credential-bearing endpoint.

## Reference

- [Outpost overview](/docs/kin/guide/outpost/)
- [Web tools](/docs/kin/guide/web-tools/)
- [Subagents](/docs/kin/guide/subagents/)
- [Modes & approvals](/docs/kin/guide/modes-and-permissions/)
- [Rig operations reference](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md)

## Forwarded technical anchors

### Tools

See [Rig operations: Tools](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md#tools).

### Configuration

See [Rig operations: Configuration](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md#configuration).

### Browser actions

See [Rig operations: Browser actions](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md#browser-actions).

### Desktop actions

See [Rig operations: Desktop actions](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md#desktop-actions).

### Peek from Outpost

See [Rig operations: Peek from Outpost](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md#peek-from-outpost).

### Operator tasks

See [Rig operations: Operator tasks](https://github.com/kinra-ai/kin/blob/dev/docs/internals/rig-operations.md#operator-tasks).
