feike.studio

Nadir · Own product · 2026 — ongoing

Designing and building
an AI companion for work and life.

I designed and built a personal AI companion, then developed it into Nadir: a desktop app with distinct characters and lasting memory that helps with everyday work, from research and transcripts to notes and tasks.

My role
Product direction · UX / UI · AI-assisted build
Platform
Desktop app for macOS (Tauri, React, TypeScript) · mobile in parallel
Today
Nyx in daily use · Nadir in closed alpha
Website
hellonadir.com ↗

Eos

Curious and gently direct.

Eos brings warmth and energy to a conversation. She helps you find a small next step while taking what you’ve said seriously.

Morpheus

Calm, attentive and imaginative.

Morpheus helps you look at the possibilities, compare them carefully and make a choice.

Original Companion selection artwork. Eos and Morpheus are the two free starter characters in Nadir.

Designing how the companions behave

I designed the characters’ appearance, responses, memory and level of initiative together.

Nyx started as a companion for my own daily life. Nadir uses the same core, giving other people their own data and a choice of companions. I’m responsible for product direction, persona logic, the interface, specifications and the quality of the AI-assisted build.

I defined how Eos and Morpheus look and behave, including how they disagree, handle uncertainty and continue a conversation. Their expressions show those differences while keeping each character recognisable.

Get to know a companion before choosing

Onboarding gives people time to get to know the companions before choosing one.

Full-length cards introduce Eos and Morpheus side by side. Opening a card lets people preview the companion’s voice, personality and visual style.

People can move between the cards and introductions before deciding. Both starter companions are included, and they can change their choice later.

Nadir’s onboarding shows both companions in full before opening an introduction.
Eos’s introduction previews her personality and visual style. People can continue with her or go back.

Make it easier to start a conversation

Starting with an empty chat can be difficult. Presence offers a greeting and a few things to respond to.

A contextual greeting and three cards help people return to an open thread, a pending task or a conversation starter. The cards also say when there are no threads or tasks, so a new user still has a starting point.

More detailed work happens in separate workspaces with their own tools and permissions. People can use the companion for those tasks while keeping the conversation easy to follow.

Nyx, the private edition: a contextual greeting and three cards help you pick up where you left off. Interface in German.
In this demo conversation, I asked Eos to stage an impressive portfolio demo. She responded with humour, using expressions and emotion labels alongside the dialogue.

Setting limits the companion can follow

A companion needs clear limits on what it remembers and does on its own. Two problems I encountered in daily use shaped those limits.

Use the calendar data that’s available

The model once invented an appointment in a calendar answer. That made it hard to trust even a convincing response.

I limited calendar answers to events the system had actually loaded. If an entry isn’t there, it should say “not found”. I had to design for missing information as well as successful answers.

Save the bookmark before adding AI summaries

A bookmark needs to save even if the model or network request fails. I separated saving from AI processing.

The link, text and images are saved locally first. Summaries and tags are added in the background. If that step fails, the saved entry is still there. The interface shows these as separate steps.

I apply similar limits to background work. A saved API key doesn’t give the system permission to use it whenever it likes. Actions that affect something outside the app have their own scope and controls. The automation architecture below records those decisions.

Building Pose Studio to create companions

Pose Studio takes a character’s master image through generation, review and packaging to produce a consistent set of assets for the app.

ComfyUI didn’t cover the full process I needed. I built a local Python tool to generate, compare, adjust, approve and assemble the artwork.

The tool supports Gemini image models and GPT Image through OpenRouter, plus manual imports from tools such as Mage.Space. Each expression keeps its prompt, versions and approval status. I can replace a failed pose without rebuilding the whole set.

  1. Direct

    Start with a master image and write prompts for the character, posture and expressions.

  2. Generate & review

    Generate 42 expressions for each avatar and chibi set. Review each pose, regenerate it if needed and approve the result.

  3. Finish in Figma

    Upscale the approved set, clean up the artwork in Figma and return the final transparent images.

  4. Assemble

    Add the persona, themes, stage and selection card. Check that the source files are complete before packaging.

Pose Studio also assembles the persona, themes and selection card. It blocks export if image sets are incomplete or outdated. Each final package includes 42 chat expressions and 42 chibis per theme, so I can repeat the same process for each companion.

Each expression has its own prompt, versions and approval status. All 42 expressions in this Morpheus set have been generated and finished in Figma. Interface in German.
Theme Studio shows colour changes in a preview. Here, sample Nyx dialogue helps me check Eos’s theme.
Background Studio lets me set the scene, lighting and composition, then compare versions. The prompts specify where to leave room for the companion.
See how I create a companion card
The Eos card from the start of this case, shown in Companion Studio. The avatar master defines her appearance; a separate reference keeps the card layout consistent.

A free app with additional paid companions planned

People can use Nadir for free and choose to pay for additional characters.

Eos and Morpheus are included in the free app. Additional official companions are the planned paid offering. I want to test whether people will pay for a character’s personality and visual style once they use the app regularly.

This requires clear character previews, consistent packages and a deliberate choice when switching. New companions are imported as signed files. Importing one leaves the current companion selected until the user chooses to switch.

Package creation and import are implemented. Paid distribution and willingness to pay still need to be tested.

Companion settings with Eos selected. Her card and theme appear alongside options to import or discover more companions.
The same settings with Morpheus selected. His card and indigo theme show which companion is active.

How memory, models and automations work

Both editions use React, FastAPI and Tauri, with data held in SQLite and a local vault. Model providers are optional connections. Nyx runs privately on my infrastructure; Nadir includes its local backend in the macOS app.

The editions share code and keep their data separate. Edition profiles and build checks keep private Nyx content out of Nadir. Each memory has a source, a scope and a lifecycle, including deletion of derived indexes. Stored content and core functions work without a provider. Generative features need a chosen local or external model.

Memories link back to their sources. Local search selects relevant context, and lifecycle rules and user controls determine what is kept.
Open Memory diagram at full size ↗

These choices affect the conversation: what the companion remembers, when it speaks and how it responds when it’s unsure.

See documents and calendar in Nadir

The companion can also help in the document and calendar workspaces. Document actions start with a selected file. Calendar prompts use events, free time and overdue tasks as context.

Files sit beside the companion’s editing area. Editing actions become available after a document is selected.
Even on a day with no events or open tasks, the calendar shows the weather and offers a way to add a task.

The AI tools I use

I use AI to try visual ideas, build software, test voices and work with creative tools. I build my own tools where I need a step the existing ones don’t cover.

Character productionComfyUI · Mage.Space · Pose Studio · Figma
I usually create master images in ComfyUI or Mage.Space. In Pose Studio, I generate and review expressions and assemble Companion packages, finishing the artwork in Figma.
Image & video explorationMage.Space · Higgsfield
I try visual ideas and compare the results from different image and video models.
AI coding environmentsWindsurf · Codex · OpenCode
I use these environments to write and review code, from small changes to building my own tools.
Language & local modelsClaude · GPT · Gemini · Ollama
I use language models to help build and review software. I also test Gemma, Qwen and other open models locally.
Multi-model providersOpenRouter · Venice · Featherless · Hypereal
I use models from several providers and integrate their APIs into my projects.
Voice & conversationFish Audio · ElevenLabs · Cartesia · Gemini API
I experiment with generated speech and voice conversations through the Gemini API.
Connected creative toolsMCP · Figma · Blender · Godot
I connect AI to design, 3D and game tools through MCP servers.
See how I built Pose Studio →

Learning from daily use and a closed alpha

I use Nyx daily. Five people use Nadir in closed alpha.

Alpha feedback helped me fix names that weren’t saved consistently, give new users a clearer starting point and keep loaded content visible when an optional provider returned an error.

I define the behaviour and acceptance criteria, build in small steps with AI assistance and check the result against the code and built app. That includes updates, permissions and keeping local data intact.

The alpha gives me direct feedback on using the app. I still need to learn whether more people will adopt it, keep using it and pay for additional companions.

Product status confirmed October 2026 · Independent project · Product design and AI-assisted implementation by Arne Feike