Run Locally

Setup & Installation

This guide covers every option in detail. If you just want to get running, the Getting Started page has the 5-minute path.

Installation

Download the DMG

Get the latest .dmg from salmex.io. Requires macOS 15 (Sequoia) or later on Apple Silicon.

Drag to Applications

Open the DMG and drag Salmex I/O into your Applications folder.

First launch

Double-click the app. macOS will show a security dialog because the app is downloaded from the internet. Click Open to proceed.

Gatekeeper

If macOS blocks the app entirely, go to System Settings > Privacy & Security and click Open Anyway next to the Salmex I/O entry. This only needs to happen once.

Database setup

Salmex I/O stores your conversations, memories, and scheduled tasks in PostgreSQL. The onboarding wizard presents two options.

Built-in storage (recommended)

The default. Salmex I/O runs and manages a local PostgreSQL instance for you. Click Continue during onboarding and you're done — no terminal, no passwords, no setup. The database starts automatically with the app and your data stays on your Mac.

What happens behind the scenes

The app runs PostgreSQL 17 locally via the Go sidecar. It creates the database, enables pgvector and uuid-ossp extensions, runs all migrations, and stores data in the app's support directory. You never need to touch it, but it's fully inspectable.

Bring your own database

If you already run PostgreSQL or prefer to manage it yourself, click I have my own database during onboarding. You'll need:

  • PostgreSQL 17+ with the vector and uuid-ossp extensions enabled
  • A connection string or host/port/database/user/password credentials

The onboarding wizard tests the connection before proceeding and optionally saves credentials to your macOS Keychain.

Option A — Postgres.app

The easiest way to run your own database on a Mac. Postgres.app is a free, full-featured PostgreSQL packaged as a macOS application.

Download Postgres.app

Go to postgresapp.com/downloads.html and download PostgreSQL 17 (~120 MB). Works on both Apple Silicon and Intel.

Install and start

Open the .dmg, drag Postgres to Applications, double-click, and click Initialise. A small elephant icon appears in your menu bar.

Create the database

Double-click any database in the Postgres.app window to open a prompt. Then run:

Create the database and enable extensions
CREATE DATABASE salmex;
\c salmex
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Connection string: postgresql://localhost/salmex

Option B — Docker

If you have Docker Desktop installed and running, one command sets up everything:

Start PostgreSQL with Docker
docker run -d \
  --name salmex-db \
  -e POSTGRES_USER=salmex \
  -e POSTGRES_PASSWORD=salmex \
  -e POSTGRES_DB=salmex \
  -p 5434:5432 \
  -v salmex-pgdata:/var/lib/postgresql/data \
  pgvector/pgvector:pg18

Connection string: postgres://salmex:salmex@localhost:5434/salmex

Docker must be running

The database lives inside Docker, so Docker Desktop must be open whenever you use Salmex I/O.

Option C — Cloud database

Run the database on someone else's servers. Two good free options:

Neon

Generous free tier (512 MB). Wakes up automatically — no manual restarts. Best choice for most people.

Supabase

Free tier with 500 MB. Note: free projects pause after 7 days of inactivity.

Create an account, create a project with PostgreSQL 17, enable extensions in the SQL editor:

Enable extensions (cloud)
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Copy the connection string from your project dashboard and paste it during onboarding.

Supabase note

On Supabase, uuid-ossp is already enabled by default. Use the Session pooler connection string (not "Direct").

AI provider setup

The onboarding wizard presents three choices for how to run AI inference. This is separate from your plan — every option below works on the Free tier. All can be changed in Settings > AI at any time.

Managed inference (recommended)

The fastest path to chatting. Click Sign in during onboarding to create an account and start a 14-day free trial — no credit card required. No API keys to find, no provider accounts to create.

What you get:

  • 5 managed open-source models — Everyday (DeepSeek V3.2), Fast (Llama 4 Scout), Reason (DeepSeek R1), Code (Qwen3-Coder), Think (Qwen3-235B)
  • Brave Search bundled — web research works out of the box, no search API key needed
  • Auto-routing picks the best model for each task (or you can pin a specific model)
  • 5-21x cheaper than calling Claude or GPT-4o directly — see pricing
  • Falls back to your own API keys when quota runs out — you're never cut off

After the trial, buy credit packs from $5 for more messages (Pro subscribers get 100 messages/month included). Or just continue with your own keys.

Bring your own key

Click Add key during onboarding. Select a provider, paste your API key, and the app verifies it instantly.

ProviderWhat you needNotes
AnthropicAPI key from console.anthropic.comClaude models. Strong default for general use.
OpenAIAPI key from platform.openai.comGPT-4o, o3, and newer models.
GoogleAPI key from aistudio.google.comGemini models.

You can configure multiple providers and switch between them per conversation. All API keys are encrypted at rest with AES-256-GCM.

Ollama (100% local)

For fully local AI with zero data leaving your machine. Install Ollama, pull a model (ollama pull llama3.2), and select Ollama during onboarding. No API key, no account, no internet required after the initial model download.

Search setup

Search lets your agent research the web. How it works depends on your AI choice:

  • Salmex I/O Pro — 50 Brave searches/month are included. Nothing to configure. You can optionally add your own keys for Perplexity or Google for more.
  • BYOK / Ollama — Bring your own search API key. You can skip this during onboarding and add it later in Settings.
EngineWhat you needNotes
PerplexityAPI keyAI-powered search with citations. Best for research.
BraveAPI keyPrivacy-focused web search. Good general-purpose.
GoogleAPI key + Search Engine IDGoogle Custom Search JSON API.

First launch

On first launch the app presents an onboarding wizard that walks you through each step above. All settings can be changed later in Settings.

After onboarding completes, the app drops you into Chat with a proof conversation already in your history — a live demo showing the agent remembering something from moments earlier. This is real data in your real database, not a simulation.

Screenshot: First conversation after onboarding

From here, you can:

  • Start chatting — your agent is fully configured and ready
  • Connect Telegram — reach your agent from your phone
  • Explore Features — memory, schedule, channels, and more
  • Change any setting in Settings — providers, models, search, and appearance