Chapters

File types

Castiel reads and writes a small, deliberate set of file types. Four of them belong to Catena, the language you author sequences (programs) in; the fifth is a saved paper tape. This chapter is the reference catalogue: what each file is, what you do with it, and how it opens. For the fuller story of how the Catena files relate — and how to package and share them — see Catena: files and sharing.

You rarely need to think about extensions while you work: the Library and the tape handle saving and loading for you. This page is here for the moments when you receive a file, hand one over, or want to know exactly what is on disk.


At a glance

Extension What it is What you do with it How it opens
.cat A single sequence (one program). Keep or share one sequence on its own. Opens in the Catena editor for viewing and running.
.cats A portable library: a bundle of sequences in one file. Hand over a whole collection at once. Adds its sequences to your Library. Runs nothing.
.catx The same bundle as a .cats, marked to run itself. Ship a pack that does something the moment it opens. Runs the bundle's default sequence (or offers a chooser) — with a trust prompt for packs you did not author.
.nex The manifest that ties a bundle together. Rarely handled on its own; it travels inside a bundle. Read as part of the .cats/.catx it belongs to.
.cast A saved paper-tape session. Keep or reopen a whole worked session. Opens as a tape session, restoring your entries and settings.

The Catena files

.cat — one sequence. A .cat file holds a single sequence: one program, saved on its own. It is stored as JSON and carries everything needed to list and understand the sequence without running it — its name, its parameters, its description, and any labels you gave it. Reach for a .cat when you want to keep or pass along just one sequence rather than a whole collection. Opening one brings the sequence into the Catena editor, where you can read it, run it, or fold it into a larger project.

.cats — a portable library. A .cats file is a single-file bundle of sequences: several .cat files packaged together with a manifest that names them. It is the tidy way to move a whole collection from one place to another — you send one file, and the recipient brings the entire set in at once with Import pack in the Library. Opening a .cats runs nothing. It is a library you browse and draw from at your leisure, which is exactly why it is the safe default for anything you have merely received and want to look through first.

.catx — a library that runs itself. A .catx file is byte-for-byte the same bundle as a .cats — the same sequences, the same manifest, the same container. Two things differ: the extension, and what happens when you open it. A .catx is marked to run. Open one and Castiel executes the sequence the bundle names as its default; if no default is named, it shows the list of sequences inside and lets you pick one. Turning a plain library into a self-running pack (or back again) is only a rename, .cats ↔ .catx; because Windows normally hides extensions, Castiel offers that switch from inside the app rather than making you rename the file by hand.

Double-clicking a .catx is therefore not the same as double-clicking a .cats: it runs code. When the pack is one you did not author, Castiel asks you to confirm before it runs — a trust prompt, the same caution any careful tool takes before executing an unfamiliar file. A .cats never raises this question, because it runs nothing. Underneath the prompt there is a second safeguard worth knowing: a Catena sequence is sandboxed. It cannot reach into your file system, open network connections, or touch devices on its own — those capabilities are simply not part of the language. At worst a .catx computes and shows you a result. The trust prompt lets you decide when a received pack runs; the sandbox ensures that even a pack you trusted cannot misbehave.

.nex — the manifest. A .nex file is the project descriptor for a collection, stored as JSON. It is the part-list that ties a bundle together: it names the .cat files that belong to the collection and records collection-level information — the name and version, which sequence is the default (the one a .catx runs on open), the default language for labels, and any external services the sequences need. A .nex normally travels inside a .cats or .catx; you seldom handle one on its own. It is what turns a set of loose .cat files into one coherent library rather than a pile of unrelated programs.


The tape file

.cast — a saved paper-tape session. A .cast file is a saved session of the shared paper tape: every entry, every edit, every annotation, plus a snapshot of the settings the session was worked under. It is written progressively as you go rather than only when you press save, and it carries a checksum so that an interrupted or damaged file can be detected and an incomplete session recovered the next time you open it. Reopen a .cast to return to a whole worked problem exactly as you left it, ready to review, extend, or correct.


How they open

Castiel registers all of these types with your operating system, so double-clicking a file opens it in the right place:

  • A .cat, .cats, .catx, or .nex opens as Catena work — a single sequence goes to the editor; a bundle is brought into the Library; a self-running .catx executes its default sequence (with the trust prompt for packs you did not author).
  • A .cast opens as a tape session, restoring your entries and the settings snapshot it was saved with.

You can also open any of them from inside the app — the Library imports Catena files and packs, and the tape opens saved sessions — which is usually the simpler route when Castiel is already running.


  • Catena: files and sharing — how the four Catena files relate, and how to package and share your work.
  • Library — importing, organising, and running your sequences and packs.
  • The paper tape — working with, correcting, and saving tape sessions.