Halfnine

io.github.notinferredPublished by GitHub account notinferredv0.3.0Updated Nov 1, 2026

PostgreSQL through Halfnine: describe, read-only queries, and changes you approve in the app.

VerifiedSTDIODesktop onlyDatabasesDeveloper Tools

Overview

AI-generated overview

Halfnine is a desktop PostgreSQL client for macOS and Windows that also runs as a local MCP server, letting an assistant describe and query your connections.

What you can do
  • Describe database schemas and run read-only queries on saved PostgreSQL connections
  • Stage changes as rows or SQL for your approval, depending on each connection's agent permission level
  • Create, copy, start, stop and delete Docker-hosted PostgreSQL databases for agent work
  • Review everything agents did on an Agents page and pause them all with one switch
When to use it
Useful if you already keep PostgreSQL connections in Halfnine and want Claude Code, Codex, Cursor, VS Code or Claude Desktop to inspect schemas and run queries against them, with writes gated behind your approval.
Requirements
A local install of the Halfnine desktop app (macOS 13+ on Apple silicon, or Windows x64); the MCP server is launched from the app binary over stdio. Saved PostgreSQL connections are needed, and Docker databases require a supported Docker engine. No API keys or environment variables are declared.
Before you install
What an agent reads is sent to its AI provider. Connections can be set to Full, letting an agent change data without approval; Docker databases an agent creates start at Full and it can delete its own without asking. Builds are unsigned, so macOS and Windows show security warnings. Backups are on by default but can be turned off.

Installation

In SourceWeft

  1. Open Halfnine in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Halfnine

A small, calm PostgreSQL client for macOS and Windows, light enough to leave open all day.

It is early: ROADMAP.md says where things stand.

Install

Download the installer from Releases. The builds aren't signed yet, so each system asks once before opening them:

  • macOS (Apple silicon, macOS 13 or later): open the .dmg and drag Halfnine to Applications. Open it once, then choose System Settings › Privacy & Security › Open Anyway. Or run xattr -dr com.apple.quarantine /Applications/Halfnine.app.
  • Windows (x64): run the -setup.exe. At the SmartScreen warning choose More info › Run anyway. It installs for the current user, without administrator rights.

When a connection saves its password, macOS asks once before Halfnine first reads it, and again after each update until the app is signed. Choose Always Allow.

Docker databases and backups

Turn on Docker databases in Settings, or at the first launch, and the Postgres containers on this computer show under Docker on the connections screen. Double-click one to connect; Halfnine reads its user and password from the container. The Docker page makes new ones (PostgreSQL 14 to 18, optionally from a dump or an SQL file), copies, starts, stops and deletes them. It works with Docker Desktop, OrbStack, Colima and Rancher Desktop.

With backups on, as they are unless you turn them off in Settings, dropping or emptying a table, dropping a column, or deleting a Docker database backs it up first and acts at once, with Undo at the foot of the window. Backups stay on the Docker page until you delete them. A table bigger than the limit in Settings, or one Halfnine can't back up, asks for its name instead.

Use with AI agents

Halfnine is also an MCP server, so Claude Code, Codex, Cursor, VS Code and Claude Desktop can use your connections through it. Open Agents, at the foot of the sidebar or the connections screen, choose Connect next to your tool, and Halfnine shows what it will change before it adds itself. Or add it by hand; on macOS:

sh
claude mcp add --scope user --transport stdio halfnine -- /Applications/Halfnine.app/Contents/MacOS/halfnine mcpcodex mcp add halfnine -- /Applications/Halfnine.app/Contents/MacOS/halfnine mcp

For Claude Desktop, install Halfnine first, then open the .mcpb file from the same release to add it as an extension. It is also listed in the official MCP Registry as io.github.notinferred/halfnine.

Each connection sets what agents may do there, under Agents in its settings: Off, Read, Read with approved writes, or Full. Red-labelled connections start at Off and every other at Read. At Read with approved writes, an agent's change opens in Halfnine as staged rows or SQL and waits for your answer. Everything agents do is listed on the Agents page, where one switch pauses them all. What an agent reads goes to its AI provider.

With Docker databases on, an agent can make its own databases, or copy one before risky work. Those start at Full and are marked with the agent's name, and it gets their URL for programs it runs. It deletes one made for it without asking; deleting any other asks you. While backups are on, what an agent drops or empties is backed up first, and run_sql won't drop tables, schemas or databases.

Develop

You need Node 24 or later, pnpm (the version in package.json is fetched automatically), Rust through rustup (rust-toolchain.toml picks the version), and on macOS the Xcode Command Line Tools. With Homebrew, brew install rustup, then put /opt/homebrew/opt/rustup/bin on your PATH; Homebrew leaves it off.

CommandWhat it does
pnpm installInstalls the UI's dependencies
pnpm devOpens the app, reloading the UI as you edit. The first run compiles the Rust side and takes a few minutes
pnpm check / pnpm formatLints and checks formatting with Biome / applies its fixes
pnpm typecheckChecks the UI's types
cargo fmt --allFormats the Rust crates
cargo clippy --workspace --all-targets -- -D warningsLints the Rust crates
pnpm iconsRenders every app icon size from assets/brand/app-icon.svg
pnpm tauri buildBuilds the installer for the machine it runs on
git tag v0.2.0 && git push origin v0.2.0Builds the macOS and Windows installers and the Claude Desktop extension in GitHub Actions into a draft release, to check and publish. Publishing it lists that version in the MCP Registry
cargo test --workspaceRuns the Rust tests. The Postgres tests skip themselves unless HN_TEST_DATABASE_URL names a database loaded with crates/pg/tests/fixture.sql, and the Docker tests unless HN_TEST_DOCKER=1 and a Docker engine with postgres:18 pulled is running. They label what they make, and CI removes anything they leave

To check the app or run the Postgres tests on a Mac without a database, start a throwaway one in Docker. It deletes itself when stopped:

sh
docker run -d --rm --name halfnine-check -e POSTGRES_PASSWORD=check -p 127.0.0.1:55432:5432 postgres:18docker exec -i halfnine-check psql -U postgres -q < crates/pg/tests/fixture.sql# connect the app to postgres://postgres:check@localhost:55432/postgres# or: HN_TEST_DATABASE_URL=postgres://postgres:check@localhost:55432/postgres cargo test --workspacedocker stop halfnine-check

Layout

  • apps/desktop: the UI, in React and Vite. Design tokens are in src/ui/tokens.css.
  • crates/desktop: the Tauri app that hosts the UI, with its window, permissions and icons.
  • crates/core, crates/pg and crates/docker: the types every crate shares, the Postgres adapter, and the Docker engine adapter.
  • docs/: architecture, decisions and brand.

License

Halfnine is source-available under the PolyForm Shield License 1.0.0. You may use it for any purpose, at work included, and change it, but not to sell it or to provide a product that competes with it. Copyright 2026 notInferred.

Source: README.md at commit c9f3f3d

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

2
  1. v0.3.0LatestNov 1, 2026
  2. v0.2.0Oct 30, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.