<p>Most real projects don't have <em>a</em> database. They have an app DB and an analytics DB, a MySQL here and a ClickHouse there, maybe a SQLite file for something local. So a panel that only ever holds one connection at a time is quietly lying to you about the shape of your own work.</p><p>0.4.3 stops doing that.</p><h2>The tree</h2><p>The DB panel is a tree now, the way you'd expect from a real client:</p><pre><code>  Database                              ＋
    ▾ 🐬 inside_finance     (24)
         addresses
         orders
         …
    ▾ 🟡 clickhouse@local    (5)
         events
         page_views
         …
</code></pre><p>Click ＋ to add one — from the project's <code>.env</code>, or by hand. Each connection lives as its own branch: expand it to see its tables, and on hover it offers its own little toolbar — new query (⌗), refresh (⟳), disconnect (⏏), remove (✕).</p><p>Open a table from MySQL and a query against ClickHouse, and they sit side by side as tabs. No more tearing one down to look at the other.</p><p>It's a small structural change with a big everyday payoff: the panel finally matches the actual shape of your project.</p><h2>Where the secrets live (and where they don't)</h2><p>The moment you let people save connections, you're holding a question you'd better answer honestly: where do the passwords go?</p><p>The lazy answer is a config file in the project. We did briefly sketch exactly that — a gitignored <code>.conductor/connections.json</code>. And the feedback came back sharp and correct: these must be stored somewhere secure, and never part of a commit.</p><p>That's the right instinct, and the file approach doesn't fully earn it. Gitignored or not, it's still a plaintext password sitting in your working tree, one stray <code>git add -f</code> or backup tool away from somewhere it shouldn't be.</p><p>So 0.4.3 doesn't put them in the project at all. Saved connections — including passwords — go into the OS keychain (macOS Keychain), keyed per project:</p><ul><li><p>Nothing is written into the project folder. There's no file to gitignore, because there's no file. Nothing to accidentally commit.</p></li><li><p>Secrets live in secure storage, managed by the OS, the same place your other credentials live.</p></li><li><p>They reappear when you reopen the project — collapsed and ready, a click away from connecting.</p></li></ul><p>It keeps a promise Conductor cares about: it reads your <code>.env</code> to connect, but when it remembers things for you, it remembers them in the right place — not scattered as plaintext across your repos.</p><h2>And a proper ORDER BY</h2><p>Smaller, but you'll feel it. The table view already let you sort by clicking a column header — lovely for "sort by this." But sometimes you want "newest first, then by id," and a single clickable header can't say that.</p><p>So there's now an ORDER BY box, right next to WHERE:</p><pre><code>  WHERE   amount &gt; 1000        ORDER BY   created_at DESC, id
</code></pre><p>Type the clause you actually want. Header-clicks still work for the quick case; an explicit <code>ORDER BY</code> takes over when you need something richer. The ✕ clears filters and order together and you're back to the plain table.</p><h2>A two-minute tour</h2><ol><li><p>Open a project with both an app DB and an analytics DB.</p></li><li><p>DB panel → ＋ → <strong>From .env</strong> — your MySQL appears.</p></li><li><p>＋ again → <strong>manual</strong> → ClickHouse, port 9000 → <strong>Connect &amp; save</strong>.</p></li><li><p>Expand both. Open <code>orders</code> from MySQL and run <code>SELECT … FROM events</code> against ClickHouse — both open as tabs.</p></li><li><p>On the <code>orders</code> table, type <code>total DESC, created_at DESC</code> into ORDER BY. Apply.</p></li><li><p>Quit the app. Reopen the project. Both connections are right there — and <code>git status</code> has nothing to say, because nothing was ever written.</p></li></ol><h2>The throughline</h2><p>There's a pattern to how this feature came together, and it's worth naming. The first sketch worked — one connection, a config file. But "works" kept bumping into "is this actually right?" The shape was wrong (projects have many databases), and the storage was wrong (secrets don't belong in the tree). 0.4.3 is what you get when you let those two corrections land: a panel that matches reality, and a memory that respects your secrets.</p><p>That's the quiet contract underneath Conductor. It's a tool, and a good tool is honest — about the shape of your work, and about where it puts the things you'd rather not lose or leak. It reads your <code>.env</code>, speaks each database's own protocol, keeps your passwords in the vault the OS already gave you, and never once reaches for a model.</p><p>Open a project. Add two databases. Close it. Reopen it. They're waiting, and your repo never knew. 🪵🔥</p><p><em>Elyra Conductor 0.4.3 adds multiple per-project database connections (stored in the OS keychain) and an ORDER BY field to the table view, with auto-update built in. Four engines now — MySQL, PostgreSQL, ClickHouse, SQLite — side by side in one panel. Conductor connects, queries, and exports; it never reasons.</em></p>