DEV Community

Francisco Costa
Francisco Costa

Posted on

Hello DEV 👋 I'm building Somnus, a desktop AI agent with 50+ models behind one key

Hi DEV! I'm Francisco (Chico), a developer from Lisbon, and this is my first post here.

For the last few months I've been building Somnus, a desktop AI agent for Windows and Linux that lets you work with Claude, GPT, Gemini, DeepSeek, Grok, Qwen, Kimi, GLM and more from one workspace and one prepaid balance.

Why I built it

I kept juggling API keys, dashboards and billing pages for every model provider. I wanted one place to:

  • switch models mid-task without changing tools
  • pay as I go instead of stacking subscriptions
  • use the same account from a desktop app and from my terminal

How it works

The desktop app is based on Hermes Agent by Nous Research (MIT license), with its own identity and a model gateway behind it.

The gateway is OpenAI-compatible, so existing code only needs a different base URL and key:

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ["SOMNUS_API_KEY"],
    base_url="https://somnus.world/api/public/gateway/v1",
)

resp = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Hello DEV!"}],
)
print(resp.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

Change the model field and the same code talks to GPT, Gemini or DeepSeek.

Where it's at

  • ✅ Windows and Linux (AppImage and .deb)
  • 🛠️ Mac is in progress
  • 💳 Prepaid top-ups from $5, and credit doesn't expire

What I'll write about here

I'm planning to share the build as it goes:

  • building a desktop agent on top of an open-source project
  • running a multi-provider model gateway (routing, usage tracking, billing)
  • the not-so-glamorous side: launching on a brand-new domain and learning SEO the hard way

If you're building with LLM APIs, I'd love to hear what annoys you most about juggling providers.

Feedback, questions and criticism are all welcome in the comments.

Thanks for reading! 🌙

Top comments (0)