I built a PostgreSQL client in Rust because DBeaver was…
    Neura MarketNeura Market/DeepSeek
    ChatGPTChatGPTClaudeClaudeGeminiGeminiCursorCursorGrokGrokPerplexityPerplexityDeepSeekDeepSeek
    CoPilotCoPilotStable DiffusionStable DiffusionMidjourneyMidjourney
    View All Directories
    OverviewRulesPromptsMCPsAgentsGamesBlogVideosGuidesCoursesCommunityTrending
    DeepSeekBlogI built a PostgreSQL client in Rust because DBeaver was eating my RAM
    Back to Blog
    I built a PostgreSQL client in Rust because DBeaver was eating my RAM
    rust

    I built a PostgreSQL client in Rust because DBeaver was eating my RAM

    Faruk Durgut March 16, 2026
    0 views

    My daily laptop has 8GB of RAM. Not a lot by modern standards, but enough — until I open...

    My daily laptop has 8GB of RAM. Not a lot by modern standards, but enough — until I open DBeaver.

    DBeaver at idle: ~400MB. Add a browser, a terminal, maybe a local Docker container running Postgres, and half my RAM is gone before I've written a single query. pgAdmin wasn't much better.

    So I did what any reasonable developer would do: I spent my weekends building a replacement.

    Meet Ferox

    Ferox is a lightweight native desktop PostgreSQL client written entirely in Rust.

    No Electron. No JVM. No web engine. Just a native binary that starts in under 200ms and sits at ~25MB RAM at idle.

    → https://github.com/frkdrgt/ferox


    Features

    • Multi-tab query editor — SQL syntax highlighting, Ctrl+T for new tab, persistent query history
    • Schema browser — lazy-loaded tree with filter: schemas, tables, views, materialized views, foreign tables
    • Data browser — double-click any table to browse with server-side pagination and ORDER BY
    • Visual Join Builder — pick your tables, pick your columns, get ready-to-run SQL
    • EXPLAIN visualizer — tree view of query plans with cost and timing per node
    • Inline editing — double-click a cell, edit, Enter to commit an UPDATE
    • Export — CSV and JSON via native OS file dialog

    The Architecture

    The design is intentionally simple. Two threads, one channel each:

    ┌─────────────────────────────┐
    │     UI Thread (egui)        │
    │  immediate-mode rendering   │
    └────────┬──────────┬─────────┘
             │ DbCommand│ DbEvent
             ▼          ▼
    ┌─────────────────────────────┐
    │     DB Thread (tokio)       │
    │  tokio-postgres + native-tls│
    └─────────────────────────────┘
    

    The UI thread sends DbCommand variants (Execute, LoadSchemas, LoadDetails, etc.) and receives DbEvent variants back (QueryResult, Tables, Error, etc.). The UI never blocks — it just renders whatever state it has and updates when events arrive.

    // Sending a query from UI thread
    let _ = self.db_tx.send(DbCommand::Execute(sql));
    
    // Receiving results in the same UI update loop
    while let Ok(event) = self.db_rx.try_recv() {
        match event {
            DbEvent::QueryResult(result) => { /* update state */ }
            DbEvent::QueryError(msg)     => { /* show error   */ }
            _                            => {}
        }
    }
    

    This pattern keeps egui's immediate-mode rendering smooth — no await, no blocking, no Arc<Mutex<>> gymnastics.


    Why egui?

    I wanted a pure-Rust GUI with no system dependencies beyond what Rust itself provides. egui is immediate-mode (like Dear ImGui), which means the entire UI is re-rendered every frame from application state. No widget tree to manage, no data binding, no reactivity framework.

    For a database client this works surprisingly well — tables, scroll areas, and text inputs are all first-class citizens in egui.


    Tech Stack

    RoleCrate
    GUIegui + eframe
    PostgreSQL drivertokio-postgres
    Async runtimetokio
    TLSnative-tls + postgres-native-tls
    Syntax highlightingsyntect
    Configserde + toml
    File dialogsrfd

    Numbers

    MetricFeroxDBeaver
    RAM at idle~25 MB~400 MB
    Startup<200ms5–15s
    Binary size~12 MB~200 MB

    What's Next

    • Auto-complete (table names, column names, keywords)
    • SSH tunnel support
    • ER diagram view
    • Multiple simultaneous connections
    • Dark/light theme toggle

    It's v0.1.0 and rough around the edges, but it's been my daily driver for a few weeks now. Pre-built binaries for Windows, macOS (universal), and Linux are on the releases page.

    If you've ever been frustrated by heavy database tools on modest hardware, give it a try.

    GitHub: https://github.com/frkdrgt/ferox

    Feedback and contributions welcome.

    Tags

    rustpostgresopensourceshowdev

    Comments

    More Blog

    View all
    Five Gemma-4 models, one accelerator: what porting E2B 31B to AWS Inferentia2 taught megemma

    Five Gemma-4 models, one accelerator: what porting E2B 31B to AWS Inferentia2 taught me

    I ported the whole Gemma-4 family — E2B, E4B, 12B, 31B, and the 26B-A4B MoE — to run on...

    X
    xbill
    Hey DEV, I'm Tobore. Let's actually connect.community

    Hey DEV, I'm Tobore. Let's actually connect.

    Hey DEV, I'm Tobore. Let's actually connect. I've been on here for a while now, mostly writing and...

    L
    Laurina Ayarah
    I burned through thousands of AI tokens. Then a friend did it for freeai

    I burned through thousands of AI tokens. Then a friend did it for free

    (yep, kinda clickbait, just for the funsies 😊) At the beginning of the year, I relaunched my...

    P
    Paulo Henrique
    Claude might be saturating your machineai

    Claude might be saturating your machine

    My laptop was sitting idle with the fan at full tilt. Nothing was running that I knew of. The culprit...

    S
    Sidhant Panda
    Automated GitHub Code Reviews Using Google Geminigithubactions

    Automated GitHub Code Reviews Using Google Gemini

    I Built a Thing! TL;DR — Google Gemini-based Pull Request reviews and Issue Triaging for...

    D
    Darren "Dazbo" Lester
    What is an "agentic harness," actually?ai

    What is an "agentic harness," actually?

    I've been hearing the word "harness" thrown around a lot lately. I assumed it just meant "the IDE" or...

    T
    Tilde A. Thurium

    Stay up to date

    Get the latest DeepSeek prompts, rules, and resources delivered to your inbox weekly.

    Neura Market LogoNeura Market

    Discover the best AI prompts, plugins, and resources for DeepSeek and more.

    Content Types

    • Rules
    • Prompts
    • MCPs
    • Agents
    • Guides

    Platforms

    • ChatGPT Directory
    • Claude Directory
    • Gemini Directory
    • Cursor Directory
    • Grok Directory
    • Perplexity Directory
    • DeepSeek Directory
    • CoPilot Directory
    • Stable Diffusion Directory
    • Midjourney Directory
    • All Directories

    Resources

    • Blog
    • Documentation
    • Help Center
    • Marketplace

    Legal

    • Privacy Policy
    • Terms of Service

    © 2026 Neura Market. All rights reserved.

    |

    Not affiliated with any AI platform vendors.

    Neura Market

    Custom AI Systems & Services

    Our team of experienced AI builders will help build custom AI systems, workflows, and solutions for your business.

    Request custom work

    Ready-made automations for this

    Workflows from the Neura Market marketplace related to this DeepSeek resource

    • PostgreSQL Conversational Agent with Claude & DeepSeek (Multi-KPI, Secure)n8n · $14.99 · Related topic
    • Automate Blog Content Creation with Notion MCP, DeepSeek AI, and WordPressn8n · $9.99 · Related topic
    • Process Multiple Media Files in Telegram with Gemini AI & PostgreSQL Databasen8n · $24.99 · Related topic
    • Generate & Test SQL Code with GP/OpenRouter AI and PostgreSQL Sandboxn8n · $24.99 · Related topic
    Browse all workflows