Every feature, in one place.
Thaw Studio is the result of two years of daily Snowflake work distilled into a desktop app. Below is the current feature set — categorised, unembellished.
A Monaco editor that knows Snowflake's dialect.
Fast, familiar, keyboard-first
Multi-tab, multi-cursor, split view, code folding, zoom, comment toggle — all the primitives you'd expect from a first-class editor.
- Monaco-based editor with SQL syntax highlighting and rich keyboard shortcuts
- Multi-tab editing — each tab remembers its SQL, results, and scroll position
- Run selected text only (⌘Enter / Ctrl+Enter)
- Multi-statement scripts with per-statement Query ID and an amber gutter marker for the running statement
- Cancel queries — issues SYSTEM$CANCEL_QUERY so credits stop too
- Multi-cursor (⌘⌥↑/↓), toggle line comment, selection-occurrence highlight
- Code folding arrows always visible; fold CTEs, BEGIN…END, subqueries
- Drag tabs to reorder; split any tab side-by-side with a draggable divider
- Unsaved-change indicator and Save / Discard / Cancel on close
Context-aware completions and hovers
Schemas, columns, function overloads, even FK-aware join conditions — all sourced from your live warehouse and cached locally.
- Hover any table / view / three-part identifier to see its DDL in a scrollable tooltip with copy & select
- Function hover tooltips with all overloads — backed by a built-in catalogue of ~320 functions (works offline)
- Dotted autocomplete: db. → schemas, db.schema. → objects, db.schema.table. → columns
- Ctrl+Space inside a query suggests columns from every table in the current FROM/JOIN
- JOIN ON assistance — FK relationships first, then PK-naming heuristics, then type-compatible same-name columns, with ghost-text and dropdown
- Function-call syntax colouring: built-ins in gold, UDFs in teal
- Live SQL diagnostics — red squiggles for syntax, yellow for grammar & unknown column warnings; Snowflake-dialect PEG parser
- AI inline completions — ghost-text SQL from OpenAI or Google AI Studios, accept with Tab
Opinionated, configurable, Snowflake-correct
A formatter tuned for Snowflake SQL and a curated library of scripting and object templates.
- Format selection or whole document (⇧⌥F / Shift+Alt+F) with per-rule casing: keywords, identifiers, functions
- Configurable indent style, comma position, AND/OR placement — live preview in Editor Preferences
- Snowflake-specific rules always applied: :: kept tight, WITH on its own line, LATERAL FLATTEN as a unit
- 24 curated CREATE OR REPLACE templates across 6 categories (Tables, UDFs, Procedures, Tasks, Stages, Governance…)
- Snowflake Scripting snippets in a cascading right-click menu — block, declare, let, if/case, loops, cursors, async — with your preferred casing applied on insert
- Transparent dollar-quoting: code inside $$…$$ still gets highlighting, diagnostics, and hover
Python & SQL notebooks — now with a built-in debugger.
A proper notebook environment on your desktop
Mix Python and SQL cells, run against your live Snowflake session, and deploy back to the warehouse.
- Mixed Python (Snowpark) and SQL cells; each cell runs in its own kernel context with inline results
- Multi-tab notebooks with unsaved-change indicators and Save / Save As to .ipynb
- Run All, Run Cell, Add Cell, reorder and delete — all keyboard-driven
- Deploy a notebook back to Snowflake and run EXECUTE NOTEBOOK with optional string parameters
- Right-click a notebook in the object browser to open the latest version, execute, or set its Query Warehouse
- Cell-level traceback display with the failing file and line, plus full stack
Notebook debugger
We're actively building a first-class debugger so notebook development feels like real software engineering.
- Set breakpoints in Python cells and step through line by line
- Inspect local variables, Snowpark DataFrames, and session state at any pause point
- Attach to a running cell without restarting the kernel
- Available to pilot users as it ships — your feedback shapes it directly
Every Snowflake object, one right-click away.
Full warehouse, live tree
Databases → schemas → every object kind, with drag-to-editor and multi-select.
- All objects: tables, views, functions, procedures, sequences, stages, streams, tasks, file formats, pipes, notebooks
- Multi-selection with ⌘ / Ctrl click; batch delete across objects in one operation
- Instant search across all databases and schemas
- Drag a table or view into the editor to insert a SELECT with full column list
- Empty tables rendered faded so unpopulated objects are visible at a glance
- Hover tooltips show DDL; View Definition opens the full DDL modal
Comprehensive DDL dialogs
Full-coverage forms for the objects you create most, with live SQL preview.
- Create Database — covers the full syntax: clone with AT/BEFORE time-travel, retention, Iceberg, catalog sync, tags, visibility, comment
- Create Table designer — column editor (PK, NOT NULL, defaults, comments), cluster keys, retention, change tracking, schema evolution
- Create Task dialog — visual schedule editor (Interval / Cron with ~440 timezones), dependency picker, WHEN builder, notifications, finalizer picker
- Properties panels for tables expose inline-editable settings (cluster keys, retention, comments, per-column comments)
- Live CREATE … preview updates with every field change; one-click copy
Visual DAGs with live status
An interactive view of task graphs you'd otherwise assemble from SHOW TASKS and TASK_HISTORY by hand.
- Left-to-right DAG layout with schedule-state and last-run-state badges on every node
- Real-time polling every 3 s — updates states in place without relaying out or losing drag positions
- Skipped-state inference for downstream tasks when a predecessor fails
- Run Graph and Retry Failed buttons; Retry enabled only when Snowflake's 14-day / last-run rules are met
- Suspend All / Resume All in the correct order (root-first for suspend, leaves-first for resume)
- Right-click any node to suspend, resume, add a child task, create a finalizer, or delete
- Finalizer tasks rendered with a dashed purple edge from the root
Import, export, map, compare
Everyday data moves without leaving the app.
- Time-travel slider to query data at any past point within retention
- Export table data as CSV / JSON / Parquet via a temporary stage
- Import local CSV / JSON / Avro / ORC / Parquet — full FORMAT_TYPE_OPTIONS coverage with file preview (Parsed / Raw)
- AI Suggest fills in format options from a file sample with an explicit consent dialog
- Insert Mapping — map many source tables to one target with UNION / UNION ALL, auto column matching, CAST and COALESCE suggestions
- Side-by-side Monaco diff for any two objects, files, roles, or warehouses via Select for Comparison
- ER Diagram for any database (filterable by schema, zoom, pan, copy Mermaid source)
- Visual ER Designer: add columns, FKs, and apply the generated DDL in one step
DDL export, schema migrations, and dbt scaffolding.
Your whole warehouse as files
One-call-per-database export with configurable path layout and live progress.
- Export DDL for one database or all databases, organised by schema and object type
- Single GET_DDL('DATABASE', name, true) call per database — up to 16 in parallel
- Configurable path template: {database}/{schema}/{object_type}/{object_name}.sql with live preview
- Shared / imported databases (e.g. SNOWFLAKE_SAMPLE_DATA) are skipped automatically
- Live progress bar, cancel any time, results summary with file counts and errors
Deploy DDL with real strategies
A five-step wizard that diffs your local SQL against Snowflake and deploys with the strategy you choose.
- Multiple source directory → target database mappings in one run
- Multi-statement file parsing; USE DATABASE/USE SCHEMA context tracking
- Ag-Grid diff with New / Changed / Unchanged / Removed tags and Monaco diff preview below
- Dependency auto-select: picking a VIEW selects the TABLE it depends on
- Table strategies: Smart In-Place, Blue/Green Swap, View-Based Soft Cutover, Destructive Rebuild
- Open-in-Editor to review the generated SQL before running
- Safety snapshots per target database: CREATE BACKUP SET or zero-copy clone
- Dependency-ordered execution with up to 5 retry passes; live progress table; cancel mid-run
Generate a real dbt project from a live warehouse
Pick databases and schemas, and get a working dbt project — no dbt CLI required at generation time.
- Name, profile, and output directory with overwrite protection
- Optional: inline actual view SQL bodies (one GET_DDL per view) instead of {{ source() }} pass-throughs
- Automatic reference rewriting to {{ source() }} and {{ ref() }}; CTE aliases excluded
- Optional dbt vars: block per database so the project can be retargeted by overriding variables
- Cross-schema dependency hints while selecting sources; INFORMATION_SCHEMA handled per dbt convention
An agent that can actually run SQL against your warehouse.
Two modes, one results panel
Chat mode for reasoning over the current editor and last result. Agent mode for autonomous tool use.
- Chat mode: conversational, sees the current SQL and the latest query result — makes no live calls
- Agent mode tools: get_session_context, list_databases, list_schemas, list_tables, describe_table, run_sql, list_directory, read_file, run_command
- Stop button cancels the in-flight request cleanly
- Run buttons on SQL code blocks load the query into a new tab and execute immediately
- Copy buttons on every message and error use the native OS clipboard
- Inline completions (Tab to accept) powered by OpenAI or Gemini
- Function Catalog Ask-AI tab, with the selected function's signatures injected as context
- Live model validation — green OK or a specific API error next to the model picker
- API key stored locally with 0600 permissions; sent only to your chosen provider
First-class local files
- Open / Save / Save As with native dialogs for .sql, .yml, .yaml, .py
- dbt YAML intelligence from bundled dbt-jsonschema — completions, hover docs, red-squiggle validation; no network requests
- File browser sidebar; right-click any file to Compare against another item
Diff anything against anything
- Compare any two database objects, files, roles, or warehouses — cross-category
- Monaco side-by-side diff with trailing-whitespace normalisation
- Respects light / dark theme and the configured editor font
Visible, recoverable, cancellable
- Query IDs visible at all times; copy to clipboard from the status bar
- Backup Sets — create and browse at database, schema, or table scope
- Time Travel / Undrop for dropped databases, schemas, and tables
- Cancel running queries — also stops Snowflake credits via SYSTEM$CANCEL_QUERY
This is the short version. Try the real thing.
Pilot access includes every feature above and direct access to the team.