Skip to content

Repository files navigation

🌌 Starfire

Starfire β€” voice-first desktop AI companion

✨ An AI companion that lives on your desktop.

Talk to her. Ask her to do things. Let her see your screen.
Realtime voice Β· Desktop control Β· Tools Β· Vision Β· 3D companion

Abilities Β Β·Β  Architecture Β Β·Β  How it works Β Β·Β  Quick Start Β Β·Β  Development


Linux Electron React TypeScript Three.js pnpm

Experimental License GitHub Stars


πŸŽ€ Meet Starfire

Starfire is a voice-first desktop AI companion.

She isn't another chatbot trapped inside a browser tab.

She lives on your desktop.

Talk naturally. Ask her to perform an action. Let her search the web. Give her controlled access to desktop tools. Let her understand what's happening on your screen.

The idea is simple:

Make interacting with your computer feel more like talking to a companion than operating a machine.


Starfire abilities and capabilities


✨ Abilities

Starfire is built around doing, not just talking.

Capability What it means
πŸŽ™οΈ Realtime Voice Talk naturally using realtime speech-to-speech interaction
πŸ–₯️ Desktop Control Interact with supported desktop capabilities through controlled tools
πŸ“‚ Files & Folders Open files and folders without manually navigating your filesystem
πŸ“‹ Clipboard Read and write clipboard content
🌐 Web Search Search the web when external information is needed
🌦️ Context Access weather, date, time and system information
πŸͺŸ Window Control Focus, minimize and close supported application windows
🎭 VRM Companion React through a realtime 3D character
⌨️ Global Shortcut Quickly interact using Super + Z
πŸ‘€ Screen Understanding See and reason about what's currently on your screen

πŸ› οΈ Tools

Starfire does not receive unrestricted access to your computer.

Instead, capabilities are exposed through an explicit tool registry.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             STARFIRE TOOLS              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                         β”‚
β”‚  πŸ–₯️  open_app                           β”‚
β”‚  πŸ–₯️  close_app                          β”‚
β”‚  🎯  focus_app                          β”‚
β”‚                                         β”‚
β”‚  πŸ“‚  open_folder                        β”‚
β”‚  πŸ“„  open_file                          β”‚
β”‚                                         β”‚
β”‚  πŸ“‹  clipboard                          β”‚
β”‚  πŸ’»  system_info                        β”‚
β”‚                                         β”‚
β”‚  🌐  web_search                         β”‚
β”‚  🌦️  get_weather                        β”‚
β”‚                                         β”‚
β”‚  πŸͺŸ  window_control                     β”‚
β”‚  πŸ•  current_date_time                  β”‚
β”‚                                         β”‚
β”‚  πŸ›‘  end_session                        β”‚
β”‚                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ’¬ Talk to her like this

"Open VS Code."

"Bring Chrome to the front."

"What's in my clipboard?"

"What's the weather today?"

"Search for the latest React news."

"Minimize this window."

"Open my projects folder."

"Close Discord."

The model decides when a tool is needed.

The tool registry decides what the model is actually allowed to do.


🧠 How It Works

At the highest level:

                         πŸŽ™οΈ YOU
                            β”‚
                            β”‚  "Open VS Code"
                            β–Ό
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚   Realtime S2S   β”‚
                  β”‚      Model       β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                           β–Ό
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚     STARFIRE     β”‚
                  β”‚    Agent Core    β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                     Tool Decision
                           β”‚
                           β–Ό
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚  Tool Registry   β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό            β–Ό            β–Ό
           πŸ–₯️ Desktop     🌐 Web      πŸ“‚ Files
              β”‚            β”‚            β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β–Ό
                        πŸŽ€ DONE

The system separates:

  • 🎨 Interface
  • πŸŽ™οΈ Realtime communication
  • 🧠 Agent logic
  • πŸ› οΈ Tool execution
  • πŸ” Privileged desktop access
  • πŸ“¦ Shared contracts

This keeps the core small, testable and extensible.


🌌 Architecture

Starfire system architecture

Starfire is structured as a modular desktop agent rather than one giant application.

Starfire
β”‚
β”œβ”€β”€ apps/
β”‚   β”‚
β”‚   β”œβ”€β”€ desktop/
β”‚   β”‚   β”œβ”€β”€ Electron
β”‚   β”‚   β”œβ”€β”€ React
β”‚   β”‚   β”œβ”€β”€ Realtime voice
β”‚   β”‚   β”œβ”€β”€ VRM interface
β”‚   β”‚   └── Desktop integration
β”‚   β”‚
β”‚   └── core/
β”‚       β”œβ”€β”€ Agent
β”‚       β”œβ”€β”€ Session
β”‚       └── Tool execution
β”‚
β”œβ”€β”€ packages/
β”‚   β”‚
β”‚   β”œβ”€β”€ contracts/
β”‚   β”‚   └── Shared types
β”‚   β”‚
β”‚   └── tools/
β”‚       β”œβ”€β”€ Tool registry
β”‚       β”œβ”€β”€ Desktop tools
β”‚       β”œβ”€β”€ Web tools
β”‚       └── System tools
β”‚
β”œβ”€β”€ eval/
β”‚   β”œβ”€β”€ Scenarios
β”‚   β”œβ”€β”€ Tool evaluation
β”‚   β”œβ”€β”€ Live evaluation
β”‚   └── Metrics
β”‚
β”œβ”€β”€ docs/
β”‚   └── Architecture notes
β”‚
└── public/
    β”œβ”€β”€ sf.gif
    β”œβ”€β”€ abilities.png
    └── architecture.png

πŸ” Built With Guardrails

Desktop AI is powerful.

Giving an AI unrestricted access to a machine is also a terrible security boundary.

Starfire deliberately uses explicit capabilities instead of raw system access.

                       πŸ€– AI MODEL
                            β”‚
                            β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚ TOOL CHECK  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β–Ό                 β–Ό
            Allowed Tool        Unknown Action
                  β”‚                 β”‚
                  β–Ό                 β–Ό
              Execute             Reject

Starfire does not expose unrestricted:

sudo
rm -rf
arbitrary shell commands
unrestricted process execution
destructive system operations

The React renderer remains isolated from privileged operations.

Secrets and sensitive desktop capabilities stay on the trusted Electron side.

Give the AI capabilities β€” not the entire operating system.


πŸ§ͺ Evaluation

A desktop AI can look incredible in a demo and still fail the moment a real user gives it an ambiguous request.

Starfire therefore includes evaluation as part of the system itself.

Run checks

pnpm check
pnpm build

Run the evaluation suite

pnpm eval

Run live model evaluation

pnpm eval:live

πŸ“Š What gets measured?

Metric Purpose
🎯 Tool Selection Did Starfire choose the correct capability?
βœ… Task Success Did the requested action actually complete?
πŸ’¬ Response Quality Was the response useful and appropriate?
πŸ›‘οΈ Reliability Did the system behave consistently?
⚑ Latency How quickly did the interaction complete?
πŸ’° Cost How much model usage was required?

Evaluation scenarios include:

Simple requests
       ↓
Ambiguous requests
       ↓
Multi-turn conversations
       ↓
Tool failures
       ↓
Invalid requests
       ↓
Realistic desktop tasks

πŸ‘€ Screen Understanding

One of the next major interaction layers is vision.

Imagine saying:

"Starfire, look at this."

Starfire can capture the screen, include cursor context, and send the visual information into the same realtime interaction.

                    πŸ‘€ YOU
                      β”‚
                      β”‚
             "Look at this."
                      β”‚
                      β–Ό
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚ look_at_screen β”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
                πŸ–₯️ Screenshot
                     +
                πŸ–±οΈ Cursor
                     β”‚
                     β–Ό
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚ Realtime Model β”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
                 πŸŽ€ STARFIRE
                     β”‚
                     β–Ό
               "I can see..."

The screen becomes another input modality for the same conversational experience.


🧠 From Assistant β†’ Agent

The current system intentionally keeps the realtime layer lightweight.

The architecture is designed so larger agent workflows can grow around it.

                         BIG TASK
                            β”‚
                            β–Ό
                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”‚ Background Agentβ”‚
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό
                           Jev
                            β”‚
                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β–Ό                 β–Ό
              Local LLM          Cloud LLM
                   β”‚                 β”‚
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β–Ό
                          Tools
                            β”‚
                            β–Ό
                         Desktop

The long-term direction is:

Conversation
     ↓
Reasoning
     ↓
Tool selection
     ↓
Execution
     ↓
Verification

while keeping capabilities explicit and observable.


πŸš€ Quick Start

Requirements

Linux
Node.js
pnpm
Git

1. Clone

git clone https://github.com/neugence/starfire.git
cd starfire

2. Install

pnpm install

3. Configure environment

Create:

apps/desktop/.env

Add:

EMPIRIOLABS_API_KEY=your_key_here
EXA_API_KEY=your_key_here

4. Run

pnpm dev

Starfire should launch as a desktop application. πŸŽ€


🧰 Development

Command Purpose
pnpm install Install dependencies
pnpm dev Start development
pnpm check Run project checks
pnpm build Build the project
pnpm eval Run evaluation suite
pnpm eval:live Run live model evaluation

πŸ“ Project Structure

Starfire/
β”‚
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ desktop/
β”‚   └── core/
β”‚
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ contracts/
β”‚   └── tools/
β”‚
β”œβ”€β”€ eval/
β”œβ”€β”€ docs/
β”‚
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ sf.gif
β”‚   β”œβ”€β”€ abilities.png
β”‚   └── architecture.png
β”‚
β”œβ”€β”€ package.json
β”œβ”€β”€ pnpm-workspace.yaml
└── README.md

πŸ’« The Philosophy

Most assistants are applications you open.

Starfire is designed to be something that's simply there.

                         YOUR DESKTOP
                              β”‚
             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
             β”‚                β”‚                β”‚
           Apps             Files             Web
             β”‚                β”‚                β”‚
             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                       β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
                       β”‚   STARFIRE  β”‚
                       β”‚      ✨     β”‚
                       β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                       Voice + Vision
                              β”‚
                              β–Ό
                             YOU

You shouldn't have to think:

"Which application do I open?"

You should be able to think:

"Starfire, do this."


πŸŽ€ Starfire

A desktop companion.

A realtime voice interface.

A tool-using AI.

A visual character.

And eventually, something that feels less like software you operate...

...and more like an AI that lives alongside your computer.


πŸ’œ Project Status

Starfire is currently in early experimental development.

The system is intentionally evolving one capability at a time.

Voice
  ↓
Tools
  ↓
Desktop
  ↓
Vision
  ↓
Memory
  ↓
Agents

The foundation stays small.

The possibilities don't.


Starfire

🌌 Starfire

A little AI companion for your desktop.
Built with TypeScript Β· Electron Β· React Β· Three.js

Star the repository

Made with code, curiosity, and a little ✨

About

🌌 A little AI companion that lives on your desktop β€” always here when you need it. πŸ€–βœ¨

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages