Skip to content

shinyobjectz/qubie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧊 Qubie

a little guy who lives on your Mac

License Platform Apple Silicon Status

he watches Β· he remembers Β· he builds you things


Every memory tool waits for you to go open it.

That's fine, unless the thing your brain can't do is remembering to open things.

So Qubie doesn't wait.


what he does

🧠 remembers β€” what you read, watched, worked on. You don't file anything. πŸ”¨ builds β€” ask for a tool, get a widget. It's Lua. Open it. Change it. πŸ‘€ watches β€” on-device, 1–2Hz, nothing leaves the Mac. πŸ’¬ speaks up β€” on his own, when something's actually worth it.

the loop

flowchart LR
    A([πŸ‘€ sees<br/>1–2 Hz]) --> B{worth<br/>saying?}
    B -->|no, 99% of the time| A
    B -->|yes| C([πŸ’¬ bubble])
    C --> D{did you<br/>care?}
    D -->|kept| E[(πŸ“š learn<br/>say more like that)]
    D -->|dismissed| F[(🀫 learn<br/>say less like that)]
    E --> A
    F --> A

    style B fill:#fef3c7,stroke:#d97706,color:#000
    style C fill:#dbeafe,stroke:#2563eb,color:#000
    style E fill:#dcfce7,stroke:#16a34a,color:#000
    style F fill:#fee2e2,stroke:#dc2626,color:#000
Loading

Every bubble he fires becomes training data for whether he should have.

manners

The hard part isn't knowing things. It's knowing when to shut up.

rule value
πŸ”• max interruptions 3 / hour
⏳ quiet between them 8 min
🀐 while you're talking never
πŸ’€ told "not worth it" hushes 2 min
🌫️ bubbles vanish, no inbox

A thing that talks constantly gets closed on day one.

what's inside

flowchart TD
    subgraph mac ["πŸ–₯️ your Mac β€” all of it, all the time"]
        S["πŸͺŸ Swift shell<br/><i>floating window Β· gaze Β· screen</i>"]
        R["βš™οΈ Rust sidecar<br/><i>one binary, every organ</i>"]
        G[("πŸ•ΈοΈ Kuzu graph<br/><i>every noun is a node</i>")]
        P["🧿 perception<br/><i>MobileCLIP · ANE · 5ms</i>"]
        L["🎨 Lua widgets<br/><i>he writes them, you edit them</i>"]
    end
    C["☁️ big model<br/><i>only when he talks</i>"]

    S <--> R
    R <--> G
    P --> R
    R --> L
    R -.optional.-> C

    style mac fill:#f8fafc,stroke:#94a3b8
    style G fill:#ede9fe,stroke:#7c3aed,color:#000
    style P fill:#ccfbf1,stroke:#0d9488,color:#000
    style C fill:#f1f5f9,stroke:#cbd5e1,color:#000,stroke-dasharray: 4 3
Loading

Watching is free β€” it runs on the Neural Engine. He only costs money when he speaks.

try him

./build.sh        # swift build + cargo release + sign β†’ dist/Qub.app
open dist/Qub.app

First run asks for mic + screen recording. Models download once into home/. Quit a running Qubie first β€” build.sh starts by deleting the old bundle.

honest status

early alpha. He lives on one machine and that machine is mine.

βœ… works memory Β· voice Β· widgets Β· watching Β· unprompted bubbles
🚧 rough packaging, notarization, first-run, anything not-my-Mac
πŸ”œ next the learned model that decides when to speak (today it's a rule I tuned by hand)
❌ not yet speaking bubbles out loud · iPhone

the tree

path what
native/ AppKit shell β€” floating window, cursor gaze, carry detection, ScreenCaptureKit
web/ the character β€” WebGL body, SVG face, the talk loop
sidecar-rs/ the engine. One Rust binary on :8787. Ears, mouth, memory, agent, widgets
home/ his brain. The graph, models, ontology. Yours, gitignored, never leaves
docs/ why things are the way they are
bench/ evals. qubeval/ is the live one β€” it fails the build on regression
spike/ the proofs. Small runnable crates that had to pass before a big decision was allowed

license

Apache 2.0. Take him apart.

built by @shinyobjectz Β· for brains that drop things

Releases

Packages

Contributors

Languages