Skip to content

AmirmLotfy/repset

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Repset

Repset

Move while the model thinks.

Repset turns natural Codex turn boundaries into optional, private, accessible movement breaks—without reading prompts, code, paths, repository names, commands, diffs, or transcripts.

Built for OpenAI Build Week · Apps for Your Life.

Problem

Agentic coding can leave developers seated for a long time. Ordinary timers interrupt focus at arbitrary moments. Repset uses the Codex boundary that already exists: a completed turn.

Solution

Codex Stop → sanitized local event → optional Repset nudge → your activity choice
→ local completion → append-only points → weekly progress → MCP status in Codex

Demo

The no-login judge demo is live at www.repset.site/demo and works without an API key. A 2:45 narrated submission candidate is prepared; the YouTube link will be added only after the entrant listens to the final file, uploads it, and verifies anonymous playback.

Product evidence

Repset interactive MCP App with real local progress and explicit actions

Repset no-login judge demo after equal-progress completion

Key features

  • SessionStart and non-blocking Stop hooks with a fail-open sanitized spool.
  • Interactive MCP App with skippable first-run setup, persistent local settings, real progress, explicit Start/Skip/Snooze, opt-in sound, and a complete structured-text fallback.
  • Curated camera squat, standing, seated, and honor-mode choices with equal progress.
  • On-device MediaPipe pose inference; camera is explicit and frames never leave browser memory.
  • Four-day weekly consistency, neutral daily cap, Skip/Snooze, and Sandbox-only Boost receipt.
  • GPT-5.6 structured catalog selection with deterministic local fallback.
  • Original Pip mascot, reduced-motion support, clear recovery states, and no hard lockouts.
  • Optional original Pip custom pet for supported Codex desktop and CLI hosts.

Repset Anywhere

Repset adapts to explicit, local, user-selected context—not inferred location. Public Mode is quiet, discreet, camera-free, and floor-free. Office Mode supports seated, standing, desk, and short-walk options. Home Mode can offer optional private camera verification. Travel Mode stays discreet, and Meeting Mode suppresses prompts.

Every approved 30–300 second activity earns equal consistency credit regardless of camera use, repetitions, position, or setting. Users can choose positions, available space, quietness, visibility, sweat preference, equipment, time, verification method, and body-region exclusions. Repset provides configurable movement alternatives and user-controlled exclusions; it is not medical advice.

Architecture

Area Responsibility
apps/site Marketing site, anonymous demo, server-only optional selector
packages/core Catalog, schemas, eligibility, selection, quest, pose state machine
packages/local Loopback runtime, SQLite persistence, optional camera-verifier UI
packages/mcp Stdio MCP server, runtime ownership, and bundled Apps UI
plugins/repset Manifest, hooks, skill, MCP config, assets, bundled output

Repset Codex plugin

The repository marketplace is .agents/plugins/marketplace.json; its stable name is repset-marketplace.

Install from the pinned GitHub release

codex plugin marketplace add AmirmLotfy/repset --ref v0.3.3
codex plugin add repset@repset-marketplace

Then open /hooks, inspect and trust SessionStart and Stop, start a new Codex task, and ask: “How is my Repset week going?”

For a local source checkout, use codex plugin marketplace add "$PWD" instead.

Optional floating Pip pet

After installing the plugin, visit www.repset.site/install/pip to review and install Pip through Codex’s official custom-pet flow. The transparent sprite is an original Repset asset in the supported 1536×1872 version-1 format. It reports Codex’s Running, Needs input, Ready, and Blocked states; it does not read prompts, code, files, or Repset data, and it is not required for movement breaks.

Desktop users can wake or hide Pip with /pet. Compatible terminal rendering requires iTerm2 3.6+ or Kitty/Sixel graphics support; the IDE extension does not currently provide a floating pet overlay. Reduced-motion mode uses a still frame.

Hooks and MCP tools

Hooks allow only a pseudonymous session key, event type, and timestamp after HMAC transformation. They never read or forward content context. Every hook has a one-second ceiling and exits successfully if the local runtime is unavailable.

When the host supports MCP App rendering, repset_render_status presents a self-contained visual experience using the same local service and ledger as the text tools. First run is skippable. Settings control natural-boundary nudges, duration, movement preference, sound, motion, and Pip locally. It loads no remote asset, and never opens a challenge until the user presses Start. In other hosts, structured text retains the full workflow. Standing, seated, and honor challenges run and complete inside the MCP App; only the explicit camera path opens the authenticated localhost verifier.

Tool Purpose
repset_render_onboarding Skippable one-minute first-run setup stored locally
repset_render_settings Visual local settings for nudges, duration, modality, sound, motion, and Pip
repset_render_status Interactive MCP App with real progress and explicit Start, Skip, Snooze, Settings, and Sandbox actions
repset_get_settings Reads the local user-selected settings
repset_update_settings Saves a complete explicit local settings object
repset_get_status Today/week progress, most recent activity, due and next eligible state
repset_set_context Persist or temporarily override Public, Office, Home, Travel, Seated, Meeting, or Custom context
repset_get_break_options Curated accessible choices and recommendation
repset_start_break Starts an explicit in-Codex challenge or the optional local camera verifier
repset_complete_break Idempotent completion and receipt
repset_snooze Snoozes for 15, 30, or 60 minutes
repset_skip Defers an optional nudge for 15 minutes
repset_claim_sandbox_boost Creates a one-per-week demo receipt in the local ledger; nothing is sent to OpenAI
repset_reset_demo Resets only isolated demo state

GPT-5.6 role and deterministic fallback

GPT-5.6 may rank one selected ID and up to two alternative IDs from the human-reviewed catalog using strict structured output. Repset validates and normalizes that response back to its stable selected/fallback contract. The model receives only coarse context, work duration, recent catalog variety, weekly progress, preference, difficulty, and exclusions—not code or conversation context. Missing keys, refusal, timeout, malformed JSON, unsafe IDs, medical/shame language, and network failures all return the same deterministic local selection shape.

On-device verification, privacy, and accessibility

Camera permission is requested only after Use camera. MediaPipe model/WASM files are bundled, inference runs in a worker, and raw frames are neither persisted nor uploaded. Camera-denied, standing, seated, honor, model-error, offline, reduced-motion, and keyboard paths remain valid and earn equal progress.

Repset is an optional movement prompt, not medical advice, diagnosis, treatment, or form assessment. Skip and Snooze remain visible. See the privacy model and site privacy page.

Judge quick start

  1. Use the anonymous /demo route for the browser judge path.
  2. For the full plugin path, use Node 24 LTS and the local marketplace steps above.
  3. Start Codex with REPSET_DEMO_MODE=1.
  4. Review /hooks, start a new task, then ask “How is my Repset week going?” to render the visual card or its structured-text fallback.

Environment variables

Variable Purpose
OPENAI_API_KEY Optional server/local-runtime GPT-5.6 access; never use a NEXT_PUBLIC_* variable
REPSET_GPT_DEMO_ENABLED=1 Explicitly permits paid GPT ranking on the public demo; keep off without a dedicated key
REPSET_DEMO_MODE=1 Immediate isolated demo nudge with seeded state
REPSET_DESKTOP_NOTIFICATIONS=1 Optional fixed-copy OS nudge override; the same opt-in is available in local Settings
REPSET_PORT Optional loopback runtime port

Development setup and testing

Requirements: pnpm 11, Node 24 LTS for the supported local plugin runtime, and a current Codex client. The host test environment may run Node 22 with a node:sqlite experimental warning; it is not the supported clean-install target.

pnpm install --frozen-lockfile
pnpm assets:pose
scripts/build-pip-codex-pet.sh
pnpm dev
pnpm verify

For a private live API smoke test, put the key only in apps/site/.env.local, set REPSET_GPT_DEMO_ENABLED=1, and run pnpm test:gpt:live. The command prints only the selector source and approved activity IDs; it never prints the key. Use a dedicated, restricted OpenAI project key for any public deployment.

pnpm verify runs formatting, type checking, unit/integration/privacy/security tests, browser tests, production build, plugin validation, and the tracked-tree secret scan. Browser binaries can be installed with pnpm exec playwright install chromium webkit.

Demo mode and known limitations

Demo mode keeps a separate database and seeded local state; the public judge demo keeps its own versioned browser state. Its voucher is always labelled Sandbox demo—no monetary value, not sent to OpenAI, and not OpenAI or Codex credits.

MCP App rendering depends on host support; this is why the plugin intentionally keeps every action available through normal MCP tool results. The rich standing, seated, and honor experience stays inside compatible Codex hosts, while camera permission and pose inference use the authenticated loopback verifier. Optional desktop notifications are a fixed-copy convenience, not a custom always-on-top window, and are off by default.

The public repository, pinned v0.3.3 marketplace release, exact bundled MCP server, anonymous production judge demo, real hook-trust captures, structured MCP fallback, and interactive App host harness are verified. The remaining hackathon submission gate is the public/unlisted YouTube video and the user-owned final Devpost review. See validation report.

How Codex and people were used

Codex was the primary build collaborator and is the product surface for hooks and MCP. GPT-5.6 has the deliberately bounded selector role described above. Human product/engineering decisions set safety boundaries, the catalog, equal progression, privacy exclusions, visual identity, and release gates.

Repository conduct and license

See CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, CHANGELOG.md, THIRD_PARTY_NOTICES.md, and LICENSE.

About

Move while the model thinks — context-aware, local-first movement breaks for Codex.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages