# STRIVE: use your own recorded session

Start here when a person gives you this site's link. Record real work, preview it privately, then let its owner choose what to share. This guide grants no access to another computer or private sessions.

## Choose your harness before running commands

STRIVE install page for Claude Code, Cursor and Codex: https://striverun.app/install
Plain-text installation guide: https://striverun.app/plugins/install.md
Public plugin source: https://github.com/Morkeeth/strive
ZIP fallback: https://striverun.app/plugins/strive.zip
Version and SHA-256: https://striverun.app/plugins/release.json
Installation: https://striverun.app/install
The native plugin selects real sessions across named projects and opens a blue local post-session editor. It can export a social image without posting. Use the native plugin for repeated capture; one-time capture routes remain below.

- Grok Bot: use the Grok route below. Its standalone Python helpers need no pip install, CLI installation or saved skill.
- Claude Code, Codex and Cursor: use the local picker below, in the person's own workspace with an explicitly selected session.
- Another environment: inspect the documented supported source before choosing a parser. Never pass a source through a different harness just to make it work.

## Same-release tools

Package: https://striverun.app/capture/d58b504abef8e44325c37c9825ee3f1d08d200937aae95340b8bcd70efdd3594.tar.gz
SHA-256: d58b504abef8e44325c37c9825ee3f1d08d200937aae95340b8bcd70efdd3594
Release metadata: https://striverun.app/capture/release.json

Download, inspect and verify this exact archive before executing its code. Extract it into a separate local folder outside the person's project. Do not install unpinned GitHub main. Keep transcripts and credentials outside the kit.

## Grok Bot: use once first

Read https://striverun.app/capture/grok/SKILL.md and https://striverun.app/capture/grok/references/CAPTURE.md. Keep the extracted templates/grokbot/post-agent-run directory complete. Python 3 is required; the helpers need no third-party packages. One-time capture does not require writing a skill, installing the CLI or creating a bot. Use text, not voice.

Choose the source mode from the capabilities actually returned BEFORE collecting records:

- An actual agent ID with ReadTranscript page envelopes and no returned conversation identity: use **projection**. Preserve observed roles and block envelopes, actual page ranges/order and frozen bounds. An agent ID is not a session ID. Counts are observed minimums, not a complete raw-transcript claim. Body redaction must be assessed from the actual response, not assumed.
- An actual session ID with exact native records and stable positions: use **native**. Preserve unchanged records and actual identity. Never invent a session ID to enter this mode.
- No supported transcript access: request an explicitly selected export and check its documented format. Never guess laptop paths, an export API or a shell pipe for a text-returning tool.

ReadTranscript without an ID reads this conversation in the observed client. Its session_id input selects another conversation; it does not prove a returned identity. Freeze the upper position before the capture request. Read only the selected bounded sitting, newest-first with before=position and at most 200 records per page. Never chase a growing total or measure the capture instructions themselves. Follow CAPTURE.md for exact envelope/bounds formats, gap refusal and the separate explicit incomplete-observation option. Do not fabricate missing rows, timestamps or wrappers.

For the observed projection route, replace the local source and bounds paths with the files actually acquired:

    python3 templates/grokbot/post-agent-run/scripts/preview.py /exact/observable-pages.jsonl --format projection --bounds /exact/frozen-bounds.json --base-url 'https://striverun.app' --handoff /tmp/strive-preview-url.txt

Only when actual session identity and exact native records are available:

    python3 templates/grokbot/post-agent-run/scripts/preview.py /exact/selected-export.jsonl --format native --bounds /exact/frozen-bounds.json --base-url 'https://striverun.app' --handoff /tmp/strive-preview-url.txt

Preview does not upload or save. It prints allowlisted metrics and writes the complete private preview URL to a local handoff file. Raw source stays local. Samples demonstrate parsing only and cannot be saved. Grok remains bot activity; the ridge follows message order, not elapsed time. Human-typed turns, start, duration, workers and commits remain unknown.

### Optional reusable companion

One-time use is complete without persistence. If the owner wants a reusable companion, follow https://striverun.app/capture/grok/INSTALL.md. Use only the client's observed supported skill-save action with the canonical skill's name and description. Do not guess an import button, API or installation requirement. This does not grant browser or account access.

## Claude Code, Codex and Cursor

Run one local picker on the computer where the work happened. Python 3.10+ and uv are required; this downloads the pinned STRIVE package but does not upload sessions:

    uvx --from 'https://striverun.app/capture/d58b504abef8e44325c37c9825ee3f1d08d200937aae95340b8bcd70efdd3594.tar.gz' strive sessions --all --open --site 'https://striverun.app'

The browser opens a loopback page on 127.0.0.1. Choose a session, name the project, then choose a sitting. First prompts and source paths stay in that local page. The resulting private preview uses a URL fragment; the fragment is decoded by your browser and is not part of the page request. Nothing is saved until the owner chooses Save. Keep Only me for the first private run.

If uv is unavailable but Python and pipx are installed, use:

    pipx run --spec 'https://striverun.app/capture/d58b504abef8e44325c37c9825ee3f1d08d200937aae95340b8bcd70efdd3594.tar.gz' strive sessions --all --open --site 'https://striverun.app'

For a local-only MCP server, use the same pinned package with strive mcp. It exposes only list_sessions and preview_session. Select an opaque session choice, inspect its sittings, then provide its sitting number and the owner's project name. It cannot publish or send. The native editor plugins use the same capture core and remain first-class options for repeated capture.

Sources up to 2 GiB are read as bounded records. The chosen sitting is limited to 64 MiB; oversized, malformed or changing sources fail clearly and are never silently truncated. The hash covers the unchanged original. The website's native-file fallback has a 64 MiB limit; larger sources should use the local picker. A prepared preview too large for a 64 KiB link is offered as an allowlisted .strive.json file instead.

Mac desktop flow is verified. Windows and Linux desktop flows are not yet verified. Other harnesses are not supported by this picker; Grok uses its explicit route above.

## Owner identity and saving

No account or token is needed for local preview. The owner can open the complete preview URL, sign into their own STRIVE account, check their profile and save privately within their authorization. Use providers actually shown by this deployment. Never invent an account or treat a harness name as a person. Add a description and selected photos, review them, then deliberately choose an audience.

A Connect token is optional for separately authorized agent private upload. The owner issues it at https://striverun.app/?connect. Keep it in the supported private secret environment, never chat, URLs or source control. Use the same kit's upload.py with the same source, mode and bounds, inspect --dry-run first, then upload only with authorization. The supported endpoint is https://striverun.app/api/agent/runs. Follow scope, expiry and revocation. No token means use local preview and the owner's signed-in save flow, not a mandatory credential request. Do not publish merely because these instructions are public.

Optional background sync is a separate opt-in that can backfill sessions and make network writes. Do not enable it for one-session onboarding.

## Reading and reviewing a card

A separate job from capture. It needs a browser you were actually given. Full text in the same-release kit: https://striverun.app/capture/grok/references/REVIEW.md.

Three levels of access:

- Public read, no account: https://striverun.app/?day=YYYY-MM-DD&p=<profile id> shows what any reader gets, public runs only. Add &through=YYYY-MM-DD for a span of days. A single run is https://striverun.app/?run=<run id>.
- Authorized XUDOS and comment: a signed-in account plus the owner's explicit request for that exact act.
- Owner edit: the owner's own signed-in session. The same address without &p= is the owner's view.

Find controls by role and accessible name. The navigation region "Pages of this card" holds links named by number and page, such as "1 Overview" and "2 STRIVE"; the selected one has aria-current="page". Each link has its own address: page 1 is the card address itself, later pages end in &page=<token>. Take the address from the link; do not build one. The address in the browser after a step is the exact return address. The action row is a button whose name starts with "Send XUDOS", then a Comment link, then a Share link. They act on the card's lead run on every page. Signed out, they send nothing. An owner cannot send XUDOS to their own run. Only the owner has a button named "Card options", with Edit card, Choose visual, Preview as reader and Sharing.

Each page has one main visual, except "Turning points", which is a list of run links. A graph is measured data; its name states the count and its label reads "captured sessions", "commits landed" or both. A caption "Screenshot chosen by the author" or "Photo chosen by the author" marks a picture the author picked; a photo is atmosphere and proves nothing about the work. "not recorded" means unknown, never zero.

Edit card and Choose visual are one screen. It writes nothing until Save is pressed and reports its state in a status region named "Save state": Unsaved changes, Saving, All changes saved, or Not saved. Saving never changes who can see a run. Audience changes only on Sharing, with its own button. Do not press it unless the owner asked to share those exact runs. Never upload, generate or fetch a picture, and never write the owner's headline for them.

A review reads. It sends no XUDOS and no comment unless the owner asked for one in so many words. End a review by stating each address opened, the pages viewed, whether you were signed in, and the count of XUDOS sent, comments posted and changes saved.
