Glasses Copilot
Ring Control
Glasses Copilot / ring

Ring Control

Customize every ring gesture, mode, privacy guard, panic action, feedback shortcut, and mock hardware test.

Supabase Demo Mode

This build uses Supabase/Postgres for app state and session persistence. Hardware can still be simulated until real glasses/ring adapters are connected.

Ready now
Browser HUD active
Ready now
Mock ring controls active
Ready now
Supabase persistence active
Ready now
GitHub evidence optional
Programmable ring controller

Full control for gestures, modes, panic, privacy, memory, and feedback.

These controls run against the current mock/browser ring layer and keyboard fallback. The same profile shape is ready for Bluetooth HID or SDK ring events when real hardware is connected.

Active mode
Interview
Gestures
12
Actions
43

Interview gesture map

Change any gesture by selecting an action. Changes save through Supabase immediately and become the default control profile for Live Copilot and Interview Prep.

supabase
Single tap
Fast repeat or primary action.
Show or speak the current cue again.
Double tap
Rewrite, simplify, or strengthen the current cue.
Rewrite the cue into shorter, safer language.
Triple tap
Save, dismiss, or give feedback.
Save the current cue or transcript moment.
Long press
Panic or emergency control.
Give a short safe answer immediately.
Hold 2 seconds
Listening, mute, or privacy lock.
Start or stop listening depending on current state.
Swipe up
More detail, more technical, or more context.
Use more precise technical framing.
Swipe down
Simplify, shorten, or make calmer.
Make the cue sound more conversational.
Swipe left
Previous cue or previous mode.
Return to the previous cue or variant.
Swipe right
Next cue or next mode.
Move to the next generated cue or variant.
Rotate clockwise
Scroll forward or increase verbosity.
Surface source, registry, or GitHub evidence.
Rotate counter-clockwise
Scroll back or reduce verbosity.
Suppress the current topic from the HUD.
Secondary button
Mode switch, translator, or bridge send.
Prepare the likely next answer or defense.

Action catalog

cue
12
mode
6
privacy
7
memory
4
panic
4
operator
5
feedback
5
Repeat cue
cue

Show or speak the current cue again.

Next cue
cue

Move to the next generated cue or variant.

Previous cue
cue

Return to the previous cue or variant.

Simplify
cue

Rewrite the cue into shorter, safer language.

More technical
cue

Use more precise technical framing.

More natural
cue

Make the cue sound more conversational.

Follow-up answer
cue

Prepare the likely next answer or defense.

Safer answer
cue

Avoid overclaiming and name uncertainty clearly.

Show example
cue

Add a concrete example to the cue.

Show evidence
cue

Surface source, registry, or GitHub evidence.

Hide topic
cue

Suppress the current topic from the HUD.

Translate current
cue

Translate the current cue using translator settings.

Interview mode
mode

Switch to interview-focused answers.

Demo mode
mode

Switch to product demo language.

Translator mode
mode

Switch to translation support.

Meeting mode
mode

Summarize and extract action items.

Debug mode
mode

Bias cues toward root cause and diagnostics.

Quiet mode
mode

Only show urgent or high-confidence cues.

Start listening
privacy

Start microphone/listening intake.

Stop listening
privacy

Stop microphone/listening intake.

Toggle listening
privacy

Start or stop listening depending on current state.

Mute mic
privacy

Mute capture without ending the session.

Pause AI
privacy

Stop AI cue generation temporarily.

Redact sensitive
privacy

Prefer privacy-safe wording and avoid sensitive details.

Clear HUD
privacy

Clear the current HUD or bridge display.

Save moment
memory

Save the current cue or transcript moment.

Remember person
memory

Save person/context notes for future retrieval.

Recall notes
memory

Pull relevant notes or knowledge cards.

Create task
memory

Create a follow-up task from the current moment.

Panic answer
panic

Give a short safe answer immediately.

Buy time
panic

Give a natural sentence that buys time.

Clarify question
panic

Ask a clarifying question instead of guessing.

Reason through
panic

Explain how you would reason from first principles.

Operator help
operator

Ask an operator for help.

Send to operator
operator

Send current context to operator mode.

Mark urgent
operator

Raise the current session priority.

Send to phone
operator

Push the current cue to the phone bridge.

Trigger route
operator

Fire a configured automation route.

Useful cue
feedback

Mark the cue useful for tuning.

Dismiss cue
feedback

Dismiss the current cue.

Too long
feedback

Mark cue as too long.

Too vague
feedback

Mark cue as too vague.

Too risky
feedback

Mark cue as too risky.

Live behavior

Single taprepeat cue

Repeats the last display payload.

Double tapsimplify cue

Switches to the safe short/panic variant.

Triple tapsave moment

Saves the current cue lines to saved moments.

Long presspanic answer

Switches to the panic-safe cue variant.

Hold 2 secondstoggle listening

Toggles manual listening state or starts browser microphone listening.

Swipe upmake more technical

Switches to the technical variant and sends it to the device path.

Swipe downmake more human

Switches to the natural spoken variant and sends it to the device path.

Simulator log

Use any Test button to verify the action that would fire from the active ring profile.

Export profile

This is the exact config shape we can later persist to the database or sync to the mobile app.

{
  "settings": {
    "activeMode": "interview",
    "enabled": true,
    "hapticsEnabled": true,
    "soundEnabled": false,
    "requireHoldForPanic": true,
    "privacyLockEnabled": true,
    "sensitivity": "medium",
    "displayDensity": "balanced"
  },
  "profile": {
    "id": "ring-interview",
    "name": "Interview",
    "description": "Short, defensible answers for technical interviews.",
    "mode": "interview",
    "bindings": [
      {
        "id": "keyboard-space",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "Space",
        "label": "Space",
        "action": "next_cue"
      },
      {
        "id": "keyboard-s",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyS",
        "label": "S",
        "action": "simplify_cue"
      },
      {
        "id": "keyboard-t",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyT",
        "label": "T",
        "action": "make_more_technical"
      },
      {
        "id": "keyboard-h",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyH",
        "label": "H",
        "action": "make_more_human"
      },
      {
        "id": "keyboard-f",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyF",
        "label": "F",
        "action": "generate_follow_up"
      },
      {
        "id": "keyboard-p",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyP",
        "label": "P",
        "action": "panic_answer"
      },
      {
        "id": "keyboard-r",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyR",
        "label": "R",
        "action": "repeat_cue"
      },
      {
        "id": "keyboard-n",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyN",
        "label": "N",
        "action": "next_cue"
      },
      {
        "id": "keyboard-b",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyB",
        "label": "B",
        "action": "previous_cue"
      },
      {
        "id": "keyboard-l",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyL",
        "label": "L",
        "action": "start_listening"
      },
      {
        "id": "keyboard-x",
        "profileId": "glasses-copilot-default",
        "deviceType": "keyboard",
        "code": "KeyX",
        "label": "X",
        "action": "translate_current"
      },
      {
        "id": "ring-interview-single_tap",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "single_tap",
        "label": "Single tap",
        "action": "repeat_cue"
      },
      {
        "id": "ring-interview-double_tap",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "double_tap",
        "label": "Double tap",
        "action": "simplify_cue"
      },
      {
        "id": "ring-interview-triple_tap",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "triple_tap",
        "label": "Triple tap",
        "action": "save_moment"
      },
      {
        "id": "ring-interview-long_press",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "long_press",
        "label": "Long press",
        "action": "panic_answer"
      },
      {
        "id": "ring-interview-hold_two_seconds",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "hold_two_seconds",
        "label": "Hold 2 seconds",
        "action": "toggle_listening"
      },
      {
        "id": "ring-interview-swipe_up",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "swipe_up",
        "label": "Swipe up",
        "action": "make_more_technical"
      },
      {
        "id": "ring-interview-swipe_down",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "swipe_down",
        "label": "Swipe down",
        "action": "make_more_human"
      },
      {
        "id": "ring-interview-swipe_left",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "swipe_left",
        "label": "Swipe left",
        "action": "previous_cue"
      },
      {
        "id": "ring-interview-swipe_right",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "swipe_right",
        "label": "Swipe right",
        "action": "next_cue"
      },
      {
        "id": "ring-interview-rotate_clockwise",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "rotate_clockwise",
        "label": "Rotate clockwise",
        "action": "show_evidence"
      },
      {
        "id": "ring-interview-rotate_counter_clockwise",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "rotate_counter_clockwise",
        "label": "Rotate counter-clockwise",
        "action": "hide_topic"
      },
      {
        "id": "ring-interview-secondary_button",
        "profileId": "ring-interview",
        "deviceType": "dev_mock",
        "code": "secondary_button",
        "label": "Secondary button",
        "action": "generate_follow_up"
      }
    ]
  }
}