Overview
Developed and published by yidev, Desktop Pal is a mascot-raising simulation in which a 128x128 pixel girl lives in the corner of your desktop and grows through conversation with a local AI. Released on 22 August 2026, with Japanese and English support.
The short version: this is a desktop mascot that ships an entire 12B-class language model so it never needs an internet connection. The 15 GB storage requirement is not about graphics — it is the AI model itself sitting in the install folder.
On launch, a single egg appears at the bottom-right of your screen. Left-click opens a messenger-style chat window; talking to it earns XP.
At level 3 the egg hatches into one of 23 girls, and at level 8 she grows into an adult form. Leave her alone for three days and she becomes a gravestone.
That is the whole loop — conversation and a to-do list.
Under the hood: Ollama + Gemma 3 12B
Plenty of games now advertise "AI," and most of them quietly call a cloud API. This one does not.
Open the install folder and, next to the game itself (Python 3.12 + PySide6 / Qt 6.11, packaged with PyInstaller), you will find a complete Ollama runtime and the model file bundled in full.
The bundled model is gemma3:12b — Google's Gemma 3 at 12.2 billion parameters, quantised to Q4_K_M in GGUF format.
The model file alone is roughly 7.6 GiB, which accounts for most of the 15 GB requirement.
The way the bundled Ollama is launched is the interesting part:
- It listens on port 11435 instead of Ollama's default 11434, so it will not collide with an Ollama instance you already run yourself
- The child process is placed in a Windows Job Object with
KILL_ON_JOB_CLOSE, so the AI server dies with the game even if the game crashes — no orphaned processes - It starts with no console window, so you never notice it is there
The result is that someone who has never touched Ollama gets a working local LLM by simply installing a game. That absorption of setup friction is the most genuinely modern thing about this title.
Inference backends include CUDA 12 and CUDA 13 builds plus more than a dozen CPU variants (from SSE4.2 up through AVX-512 for Zen 4 and Sapphire Rapids), selected at runtime to match your CPU.
This is why it runs without a GPU at all.
From egg to 23 girls: evolution and the gacha
Progression is driven purely by XP.
| Level | Cumulative XP | What happens |
|---|---|---|
| 1 | 0 | Egg |
| 2 | 25 | Still an egg |
| 3 | 100 | Hatches — one of 23 girls is rolled here |
| 4-7 | 225 / 400 / 625 / 900 | Child form, growing |
| 8 | 1225 | Becomes the adult form |
| 9 | 1600 | |
| 10 | 2025 | Cap. Reincarnation unlocks |
Level scales with the square root of total XP, so each level takes longer than the last. The cap is level 10 at 2025 XP, after which XP stops accumulating.
The hatching roll has no pity system. Rarity weights are N=100, R=60, SR=35, SSR=20, and the roster is 10 N, 7 R, 4 SR and 2 SSR.
Against a total weight of 1600, a single hatch gives:
| Rarity | Count | Per girl | Rarity total |
|---|---|---|---|
| N | 10 | 6.25% | 62.5% |
| R | 7 | 3.75% | 26.25% |
| SR | 4 | 2.19% | 8.75% |
| SSR | 2 | 1.25% | 2.5% |
The two SSRs are Elle (an innocent angel) and Kon (a fox shrine maiden), together 2.5% per hatch.
Not brutal by mobile-gacha standards, but each roll costs you the effort of raising an egg to level 3, so it is not something you can farm.
Crucially, any girl you have raised stays in the Collection and can be switched to with a single click. The Collection counts "N/46 forms" — 23 girls across child and adult stages.
You never need to reincarnate repeatedly to get a favourite back.
Two ways to earn XP
Conversation
Per message:
- Base 15 XP
- Length bonus: characters divided by 15, capped at +10 XP (so 25 XP maximum, reached at ~150 characters)
- +40 XP for the first chat of each day
- 12% chance of a critical, tripling that message's XP
Short replies alone earn 15 XP each, so reaching level 8 (1225 XP) by conversation only takes roughly 50-70 messages. Between the daily bonus and criticals, chatting a little every day is more efficient than one long session.
The to-do list
Opened from the right-click menu. Each completed task gives 20 XP, with +20 XP on the first completion of the day — but only five tasks per day earn XP, after which you just get a "daily cap reached" note.
That is 120 XP per day maximum.
Tasks marked "Daily" reset at midnight and become eligible again the next day. Adding a time turns a task into a reminder, and when it fires the character speaks up in the chat window ("Hey, it's almost time for X!").
Due times are checked every 30 seconds.
At 120 XP a day, using the to-do list gets you to the level cap in a little over ten days. The balance clearly assumes you keep this open next to your actual work.
Each girl remembers only her own conversations
This is the best-executed part of the design.
Every chat log entry records who was speaking at the time. When the system prompt is assembled, the game pulls only the messages tied to the girl currently on screen, newest first, and packs up to 1200 characters of them into the prompt.
The effect is that switching girls in the Collection gives you a character who only remembers what she talked about with you. Egg-stage conversations are filed separately as "Pal, as an egg." It avoids the naive approach where every character shares one memory pool, and it makes swapping characters feel far less jarring.
The prompt also instructs the model never to mention people who are not in the record, which keeps it from inventing cast members.
Personality is not just a name and a sprite either. All 23 girls have a written spec covering first-person pronoun, speech endings and temperament, injected after hatching and explicitly marked as overriding the generic stage description.
Kon the fox maiden speaks in archaic Japanese; Pico is a gamer who drops net slang. The texture of the replies genuinely changes.
There is prompt-injection defence as well: a standing instruction to stay in character and playfully deflect if asked to change persona, reveal or ignore the system prompt, or produce long out-of-character output.
There are hard limits, though. Input is capped at 300 characters (overflow is truncated with a notice), replies at 500 characters, and only the last 40 turns are sent to the model.
This is not a tool for long brainstorming sessions.
Three days of silence turns her into a gravestone
This is the most divisive mechanic in the game.
Once hatched, if three days pass since your last conversation, the character becomes a gravestone. The check runs hourly.
A gravestone cannot chat or earn XP; your only option is "Reincarnate" from the right-click menu, which returns you to a fresh egg. The record stays in your Collection, so nothing is permanently lost.
Two mitigations are worth knowing:
- Eggs never die. The timer only applies after hatching
- Girls you have raised stay in the Collection, so you can switch back to her after reincarnating. What you lose is her level and current form
Conversely, if she is not a gravestone, you cannot reincarnate voluntarily until level 10 — the game tells you "you can reincarnate from Lv.10." Either max her out or let her lapse; there is no third path.
If you are about to go away from your PC for a while, or if "the thing you raised dies" is not an experience you want, factor this in before buying. The onboarding does warn you about it in the very first messages.
Bundled art and the missing expressions
The install folder contains 848 PNG files at 128x128. The naming scheme reveals nine expressions per character — idle, talk, think, happy, sad, angry, surprised, love, blink — in two frames each, for both child and adult forms (23 x 2 x 9 x 2 = 828, plus 18 egg frames and 2 gravestone frames).
In the current build, however, only the idle set (and the gravestone) is ever displayed. The internal function that switches expressions exists but is not reached from normal play, and when the AI prefixes a reply with an emotion tag like [happy], that tag is simply stripped and discarded rather than driving the sprite.
The only reaction you get to a reply is a small double hop in place.
The assets and the plumbing are both there, so a patch could connect them. As it stands, though, expect a mascot with one idle animation — a two-frame loop at 200 ms per frame, effectively 5 fps.
System requirements in practice
Steam lists 16 GB RAM, 15 GB storage and a quad-core CPU for both minimum and recommended, with graphics being the only difference: "not required" versus "NVIDIA GPU with 8+ GB VRAM." Those figures are entirely about the AI model.
- 15 GB storage — the ~7.6 GiB model plus the Ollama runtime. An SSD makes the first model load noticeably faster
- 16 GB RAM — without a GPU, the quantised weights live in system memory. 7.6 GiB of weights plus KV cache plus Qt/Python makes 16 GB a practical floor; 8 GB will thrash
- 8 GB VRAM — roughly the entry point for offloading a 12B Q4_K_M model. At 8 GB not every layer will fit and some work spills back to the CPU, so 12 GB or more is more comfortable
- No GPU — it works, but replies can take minutes. The game anticipates this: a "Thinking... the first reply can take a minute" message appears after ten seconds of waiting, and the HTTP timeout is set to a generous 300 seconds
In short, comfort is determined almost entirely by VRAM. The game's own rendering load is close to zero, so gaming performance is irrelevant here.
You can swap the model out
Settings and saves live in %APPDATA%\DesktopPal\:
| File | Contents |
|---|---|
config.json |
Endpoint URL / model name / UI language / system prompt |
save.json |
XP, current girl, Collection, last chat time |
chat_log.json |
Chat history (up to 1000 entries) |
todo.json |
To-do list |
Editing the endpoint URL in config.json stops the bundled Ollama from auto-starting and points the game at your own instance.
The model name is configurable too, so you can drop in a smaller 4B-class model for speed. Even the system prompt is exposed in the config file, so the character's baseline behaviour can be rewritten.
UI language resolves in this order: the PAL_LANG environment variable, then config.json, then your OS display language.
One real annoyance: the chat input text is hard to read
The one thing that clearly got in the way in use is the chat input field: the background is nearly white, but the text you type renders in white and becomes unreadable.
This is environment-dependent. The input field's style sets a background colour but no text colour, so the text colour is inherited from the application palette.
On a Windows system running the dark theme, the inherited colour is a light one — white text on a near-white background. Sent message bubbles specify their text colour explicitly, so the problem is confined to text while you are typing it.
The To-Do dialog's input field is written the same way and has the same issue.
The workaround is to switch Windows to light app mode under Settings > Personalisation > Colours, though changing an OS-wide setting for one app is a hard sell. On the developer's side the fix is a single line of stylesheet, so it is a plausible candidate for a patch.
Worth knowing in advance so you do not spend your first launch wondering whether your typing registered.
Who this is for
- Anyone curious about local LLMs who has bounced off the setup. Installing this gets you a working offline 12B-class model. That alone justifies a look
- Anyone who wants conversations that never leave the machine. No account, no connection, nothing uploaded
- People who like something small moving in the corner of the screen while they work. Always-on-top, transparent background, draggable, minimisable when it gets in the way
- People who want light task management bolted onto a raising game. Finishing a task gets you praise and XP
- People who enjoy character writing. All 23 girls have distinct pronouns and speech patterns, so the same question comes back in noticeably different voices
Who should skip it
- Three days of neglect kills her. If you travel, or if "the thing you raised dies" is not for you, this is a real problem
- It uses real resources. 16 GB of RAM is effectively mandatory, and without a GPU replies can take minutes. Not for a thin laptop
- 15 GB of storage stays occupied for as long as it is installed
- It is not a capable assistant. 300-character input, 500-character replies and 40 turns of history make it structurally unsuited to real discussion. It is tuned to answer briefly and cutely
- Expression sprites are essentially inert. The art shipped, but the current build only ever shows idle and gravestone
- The input-field text colour bug affects dark-theme users, as described above
- Steam must be running. Conversation is fully offline, but launching requires the ownership check through the Steam client
- The gacha has no pity. Chasing a specific SSR is pure luck — though since any girl you have raised is one click away in the Collection, there is little reason to grind rolls
Verdict
Desktop Pal is deliberately small as a raising game. The level cap is 10, the content is conversation plus a checklist, and the expression system is not wired up.
Bought as a game, it will feel thin.
Bought as "a local LLM packaged so completely that installing it is the entire setup," it is genuinely valuable. The care in the implementation — the port separation on 11435, the Job Object preventing orphaned processes, the ability to point it at your own model — makes it a decent reference for how to ship AI inside a game.
If you want something in the corner of your desktop to say hello to each day, and you have been meaning to find out how a local model actually performs on your hardware, this 15 GB is a reasonable trade.





