{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajkaria/comped@0.1.2","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/comped@0.1.2","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/rajkaria/comped@0.1.2","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajkaria/comped@0.1.2 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"Every coding session on this machine wrote down exactly what it consumed, and none of it is readable by hand. This reads all of it: Claude Code including the subagent transcripts in subdirectories, where four in ten usage lines are streaming duplicates that must be collapsed before pricing, Codex, whose counters are cumulative and need differencing, and Pi. You get one card: the API list-price equivalent of the last N days per model, the multiplier against the plan you actually pay for, your cache-read share, and how all of it moved since your last run. Under it, the jobs you have asked your agent for three or more times, each with its repeat cost and the exact play settle command to capture it. Then what those repeats would have cost as Plays, at Modiqo's stated 98% and at a conservative 80%. Prices come from a bundled table that names its source and as-of date; a model the table does not know is reported as tokens and never priced by guess. You do not tell it what you run: the model ids in your own logs nam","distribution":{"digest":"sha256:e32b2f6b88f02506501e768628d7b16df0a8e4ff5baf08e94876094a1d1718c6","mediaType":"application/vnd.modiqo.rote-flow","size":155128,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/rajkaria/comped@0.1.2","inputPolicy":{"optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/rajkaria/comped@0.1.2","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajkaria/comped@0.1.2.json"},"name":"comped","owner":{"kind":"user","slug":"rajkaria"},"parameters":[{"default":30,"description":"Filter on each record's own timestamp.","example":30,"input":{"allowCustom":true,"choices":[],"label":"Days back"},"name":"days_back","required":false,"type":"integer"},{"default":"~/comped","description":"Created if missing. Everything this Play writes goes here and nowhere else.","example":"~/comped","input":{"allowCustom":true,"choices":[],"label":"Out dir"},"name":"out_dir","required":false,"type":"string"},{"default":"~/.claude/projects","description":"Set to resources/fixtures/claude for a demo run on synthetic logs.","example":"resources/fixtures/claude","input":{"allowCustom":true,"choices":[],"label":"Claude dir"},"name":"claude_dir","required":false,"type":"string"},{"default":"~/.codex/sessions","description":"Set to resources/fixtures/codex for a demo run on synthetic logs.","example":"resources/fixtures/codex","input":{"allowCustom":true,"choices":[],"label":"Codex dir"},"name":"codex_dir","required":false,"type":"string"},{"default":"~/.pi/agent/sessions","description":"Best-effort adapter; the source note says so.","example":"resources/fixtures/pi","input":{"allowCustom":true,"choices":[],"label":"Pi dir"},"name":"pi_dir","required":false,"type":"string"},{"default":"~/.local/share/opencode/storage","description":"Best-effort adapter; the source note says so.","example":"resources/fixtures/opencode/storage","input":{"allowCustom":true,"choices":[],"label":"Opencode dir"},"name":"opencode_dir","required":false,"type":"string"},{"default":"true","description":"Claude Code subagent transcripts. true or false.","example":"true","input":{"allowCustom":true,"choices":[],"label":"Include subagents"},"name":"include_subagents","required":false,"type":"string"},{"default":"true","description":"true stores a 120-character truncation plus sha256; false keeps full text locally, never in a card.","example":"true","input":{"allowCustom":true,"choices":[],"label":"Redact"},"name":"redact","required":false,"type":"string"},{"default":"auto","description":"Leave it. auto reads the model ids already in your logs, names the providers behind them (Claude, GPT/Codex, Kimi, GLM, DeepSeek, Gemini, Grok, Qwen and the rest) and prices every tier those providers sell, marking the least flattering one as assumed -- you read your own row instead of typing it. Override with a comma-separated list of ids, or usd:<amount> for a subscription this table does not carry. This Play never opens your OAuth files to find out.","example":"auto","input":{"allowCustom":true,"choices":[],"label":"Plan"},"name":"plan","required":false,"type":"string"},{"default":3,"description":"Minimum asks for a repeat offender; also needs 2 sessions and 2 days.","example":3,"input":{"allowCustom":true,"choices":[],"label":"Repeat threshold"},"name":"repeat_threshold","required":false,"type":"integer"},{"description":"Path to a prices.json that replaces the bundled table.","input":{"allowCustom":true,"choices":[],"label":"Rates path"},"name":"rates_path","required":false,"type":"string"},{"description":"Your rote handle, used only to print the /play settle command.","example":"priya","input":{"allowCustom":true,"choices":[],"label":"Handle"},"name":"handle","required":false,"type":"string"},{"default":"dark","description":"dark or light.","example":"dark","input":{"allowCustom":true,"choices":[],"label":"Card theme"},"name":"card_theme","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/comped@0.1.2 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/rajkaria/comped@0.1.2","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajkaria/comped@0.1.2 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.79.0"},"publishedAt":"2026-09-04T12:24:37.270518+00:00","reference":"rajkaria/comped@0.1.2","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"localTools":["python3"],"roteCli":{"minimumVersion":"0.62.0"},"sessions":false},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":2,"installs":0},"steps":{"count":8,"names":["find_repeats","merge_ledger","price_ledger","read_claude","read_codex","read_opencode","read_pi","render_card"]},"title":"comped","type":"play","version":"0.1.2","visibility":"public"}