jun@junos: ~/boot
Ω
JUN OS
LOCAL. PRIVATE. YOURS.
Ω Jun_ an AI companion that lives on your machine
jun · self-hosted AI companion

JUN OS

Jun from Factorial Omega, on your own computer. She talks back out loud, reacts in the middle of a sentence, remembers what you told her last week and has opinions about your outfit choices.

A fine-tuned Gemma 4, a Live2D body and fifty little systems around them. No account and no cloud. Everything stays on your machine.

Jun waving
↓ scroll to wake her uplocal · private · yours
walking to dinner
Ω JunAI● IDLE
did you miss me?
Write to Jun...
raw stream
[A:emote|embarrassed]
pocket-tts · azelma
listening
you → Jun"what do you want to watch tonight?"answered
Jun"something with explosions. you pick the snacks."
you → the room"mom, i'll call you back in five"not for her, stays quiet
hear everything offwhisper hears it all. she decides who it was for.
<think:med>
lowone line
meda short plan
highfull deliberation
thought for 0.0 s

affection60
trust50
tension20
a hidden tag at the end of every reply moves them. you never see it.

Out looking for Jun...

"No, no, I am done. Don't follow me."

back in 4:12

composer locked

the reason is sealed with your key and kept out of the flee log

tool search_recent_chats{"query": "job interview"}2 matches · 6 days ago
memory · preferences
hates coffee, drinks it anywayinterview on thursday, nervous about itcalls her "boss" when he's being cheeky
Wait - I'm garbage collecting. Don't worry, you're marked reachable.
i'm so bored
tool go_out_to_eat{}trip granted · date.html unlocked
Trattoria La Lanterna
kitchen
steak frites + carbonara
3:41
Steak fritesCarbonarayou're paying, obviously
Jun
you
ephemeral turns · never stored · thinking off
0
a scored take goes into her memory

Annalie's Shop

click for options · drag onto Jun to wear
HEY! Stop interrupting me!
latex accesories 1.01.zip
unzipped in your browser, stored in IndexedDB. the server only ever sees item names
your machine
    Ω JunAI
    android
    2.6 GB
    int4 E2B running on the phone itself through LiteRT-LM. A Ktor server inside the app serves the same web app. No PC needed.

    01 / 16
    Jun OS, in more detail

    An LLM wrapper with fifty other systems around it.

    Jun is a character from Factorial Omega: My Dystopian Robot Girlfriend. Jun OS lets you actually talk to her. She answers out loud, gestures while she speaks, and keeps track of affection, trust and tension. Treat her well and she warms up. Push it far enough and she walks out, and she won't let you back in for a while. She'll also go out to dinner, play blackjack, sing karaoke with you and argue about outfits.

    3Gemma 4 fine-tunes, trained and published: 12B, E4B and E2B
    ~42klines of PHP, JavaScript, Kotlin, Python and shell
    2.6 GBint4 model running fully on-device in the Android build
    0requests to the cloud by default. No account, no analytics

    The models

    Gemma 4 fine-tuned with LoRA in three sizes, so she stays in character and gets the action markers right. 12B is for 12 GB cards and up, E4B and E2B are for laptops and phones. The installer checks your VRAM and picks the size and quant.

    Every turn starts with a <think:low|med|high> token that sets how long she reasons first. Small talk gets one line. A hard question gets the whole trace.

    Making it feel live

    Replies stream token by token over SSE. The model writes inline action markers, and the browser catches them mid-stream, so a gesture lands on the word it belongs to instead of two seconds later. Speech is synthesized one sentence at a time, and her mouth follows the audio's amplitude.

    The prompt is split so the static half stays byte-identical between turns, and Ollama's KV cache keeps hitting.

    Voice, both ways

    Kokoro or pocket-tts for her voice, and faster-whisper for yours. Hands-free mode sends your audio straight to models that take it and falls back to the transcript for the ones that don't. If you're talking to someone else in the room, she stays out of it.

    She remembers

    Durable notes live in encrypted per-user files, plus a journal that idle consolidation writes when you've been away. She can search your other chats on her own when something you say rings a bell. Lore comes from a curated corpus, matched by keyword per message.

    Going out

    The shop, karaoke, dinner and the card table are her call: a tool call writes a trip grant, and the page won't open without one. Dinner has three restaurants, a menu she orders from herself and a kitchen that takes as long as the slower dish. Blackjack and dinner turns are never stored.

    Sealed

    Chats, prefs and memory are sealed under a per-user data key, and the reasons she gives for walking out are encrypted too. HTTPS is on by default with a self-signed cert that covers your LAN hosts, so a phone on your wifi gets in encrypted.

    Shipping it

    It's meant for people who have never opened a terminal. One command on Linux, macOS or Windows (or a Windows installer with buttons) detects NVIDIA, AMD or CPU, downloads the right model, and rebuilds Jun's Live2D model from your own copy of the game, because those assets aren't ours to redistribute. No GPU? There's a free Colab notebook.

    Meet her in five minutes.

    
            
          

    Read it before you pipe it, it's a good habit. The installer asks a few questions, picks a model for your GPU and rebuilds her from your copy of the game. Then open https://localhost and say hi.