Polygres

PolyGres

← Back to homePolyAdvisor plans the move to Postgres. PolyWire runs and governs workloads on Postgres. PolyAdvisor tells you how hard moving to Postgres will be; PolyWire keeps your application running while you do it.

01 ghcr.io/polygres26/polyadvisor

PolyAdvisor

Tool for moving off Oracle/MySQL/MariaDB/SQL Server onto Postgres: assess how hard the migration is, then bridge your existing application to Postgres while you do it.

On this page

Two ways to get an assessment

What you get

Where PolyAdvisor is still early: saved connection credentials are stored as-is today — encryption at rest is planned but not yet built, so treat this like any other tool you'd point at a database with a password in a config file. There's a single shared admin account, no per-user roles or SSO yet. Worth knowing before you point it at anything you wouldn't otherwise put in a plaintext config.

Quick start:

docker run -p 8090:8090 \ -v polyadvisor-data:/data \ ghcr.io/polygres26/polyadvisor:latest

Connecting, exploring, and reviewing PL/SQL with an LLM's help

A connection is a JDBC URL, a schema/user, and a credential — plain password today, or a reference into Vault or CyberArk if you'd rather not store the secret in PolyAdvisor at all. Once it's saved, Objects lists everything that user can see, grouped by type and (for a multi-schema connection) owner-qualified so a package in one schema is never confused for one in another. Selecting a routine shows its real source, pulled live from the database, not a cached copy.

PolyAdvisor's add-connection form filled in with a name, an Oracle JDBC URL, a schema/user, and a masked password, with Password/Vault/CyberArk credential-source options above the password field
Adding a connection: name, JDBC URL, schema/user, and a credential — stored as a plain password by default, or resolved from Vault/CyberArk at connect time instead of being stored at all.

What the LLM step actually does, precisely: select a package, procedure, or function and PolyAdvisor can ask an LLM to explain it — a plain-English summary of what it does, a bullet list of the specific constructs that are non-trivial to port to Postgres (cursor locking, DBMS_OUTPUT, autonomous transactions, and the like), and a trivial/moderate/substantial effort estimate with its reasoning. This is a reviewer's aid, not a code generator — it does not emit PL/pgSQL, and nothing it produces feeds back into the deterministic score above. Runs entirely local by default (no API key, nothing leaves the machine) against a small on-box model, or against an external provider if you configure one on the LLM page.

PolyAdvisor's Objects tab showing an Oracle stored procedure's real source code (a cursor FOR UPDATE loop, DBMS_OUTPUT, an audit-log insert, exception handling) and, below it, a live LLM-generated summary: what the procedure does, a list of non-trivial-to-port constructs, and a migration-effort estimate with reasoning
A real Oracle procedure's source (left: cursor FOR UPDATE loop, DBMS_OUTPUT, exception handling) and the LLM's live output below it — a summary, the specific constructs that need manual attention when porting to Postgres, and an effort estimate. Explanation and risk-flagging, not automated translation.

Admin console

PolyAdvisor's Findings dashboard for a connected MySQL 8.0 database: an EASY complexity tier with an overall score of 20 on a 0-100+ scale, a feature inventory (tables, views, triggers, procedures, functions), and an itemized migration-complexity breakdown per feature with per-item point costs and plain-English rationale
PolyAdvisor's Findings dashboard against a real MySQL 8.0 connection — complexity tier, overall score, feature inventory, and the itemized per-feature breakdown behind that score, each line with its own point cost and reasoning. The same connection also has Objects (schema/routine browsing), Workload (captured query summary), and Parameters (full config inspection) tabs alongside this one.
PolyAdvisor's Sizing recommendation for the same connection: a SMALL tier with 2 vCPUs, 12 GB memory, 20 GB storage, 3,000 storage IOPS, and 100 max_connections, plus a caveats box and a rationale list explaining each number
Sizing recommendation for the same connection — a starting-point Postgres instance shape built from a fresh schema-size scan and workload capture, with the caveats and the line-by-line rationale behind every number shown alongside it, not hidden behind a tooltip.