Skip to content

Supported File Types

Whittl can work with a handful of file types directly. Everything else is either supported as a passthrough asset (Whittl copies and preserves, never modifies) or unsupported (you'll need an external tool).

Python source (.py)

The primary file type. Whittl's code editor, auto-fix, autocomplete, and error detection all target Python.

  • Generated by: all AI backends, all generation flows
  • Edited in: the built-in code editor, or any external editor on disk
  • Executed by: the Test Run button, F5, or manually via the terminal panel

Jupyter notebooks (.ipynb)

Limited support as of v2.3. Whittl can read existing notebooks and extract code cells, but can't generate or author them natively. If you want a notebook-based workflow, generate .py files in Whittl and convert via jupytext or similar externally.

Text and markdown

Extension Treatment
.md Renders with syntax highlighting in the editor. README files commonly live alongside projects.
.txt Treated as plain text. Editable.
.rst Treated as plain text. Renders without formatting.

Configuration and data

Whittl treats these as editable text files with syntax highlighting:

Extension Treatment
.json Syntax-highlighted JSON. Whittl validates on save.
.toml Syntax-highlighted TOML (for pyproject.toml, config.toml, etc.)
.yaml / .yml Syntax-highlighted YAML
.csv Treated as plain text (no spreadsheet view — use an external tool if that's what you need)
.ini / .cfg Syntax-highlighted with INI rules
.env Syntax-highlighted. Shown as plaintext — don't commit API keys to these.

The AI can generate, modify, and reason about these file types as part of multi-file projects.

Images

Extension Treatment
.png Preview in Assets panel. AI can include as vision input.
.jpg / .jpeg Preview + vision input.
.svg Preview + treated as text (editable).
.gif Preview (first frame).
.webp Preview + vision input.
.bmp, .tiff Preview only, no vision input.

Images dropped in the chat panel are sent to the AI as vision input (for backends that support it — see Choosing a Backend).

Images in the assets/ folder are preserved across generations — the AI can reference them (QPixmap("assets/logo.png")) but won't overwrite them unless you explicitly prompt for it.

Audio

Extension Treatment
.mp3 Preserved in assets. Referenced by generated code.
.wav, .ogg, .flac, .m4a Same as above.

Audio files aren't played or transcribed inside Whittl — they're passthrough assets for the app you're building.

Video

Extension Treatment
.mp4, .avi, .mov, .webm Preserved as passthrough assets. No preview.

Fonts

Extension Treatment
.ttf, .otf, .woff, .woff2 Passthrough. Whittl doesn't preview font files; the AI references them by path.

Archives and binaries

Extension Treatment
.whittl-template Imports via File → Import Template
.zip Passthrough. Whittl doesn't unzip — use an external tool first.
.so, .dll, .dylib Passthrough only. Whittl can reference compiled libraries if your code imports them but won't generate bindings.

What Whittl does NOT handle

  • Spreadsheets (.xlsx, .ods) — treated as binary passthrough. Use LibreOffice / Excel to edit.
  • PDFs — not editable, not previewed, not sent to AI as document context. (Some backends support PDFs via their SDKs but Whittl's pipeline doesn't route them.)
  • Binary 3D models (.blend, .fbx, .obj) — passthrough only.
  • Databases (.db, .sqlite) — passthrough. The AI can generate code that reads/writes them but Whittl doesn't provide a built-in DB browser.
  • Git directories (.git/) — Whittl doesn't integrate with git directly. Use your terminal or a git GUI for version control.

Multi-file generation file naming

When the AI generates a multi-file project, file names come from the AI's best judgment. Conventions:

  • main.py is always the entry point
  • UI files go in ui/ or views/
  • Data/model code goes in core/ or models/
  • Database or persistence code goes in managers/ or db/
  • Assets (images, sounds, fonts) go in assets/
  • Runtime/user data (saved state, user files) goes in data/

See Multi-file Projects for the full structural conventions.

What's next