Skip to content

Configuration Reference

code2cast stores project configuration in .code2cast/config.json at the root of your project.

Example

json
{
  "name": "My Project",
  "description": "A brief summary of what this project does",
  "include": [
    "**/*.ts",
    "**/*.tsx",
    "**/*.js",
    "**/*.jsx",
    "**/*.py",
    "**/*.go",
    "**/*.rs"
  ],
  "exclude": [
    "node_modules",
    "dist",
    ".next",
    ".git",
    "*.lock"
  ],
  "theme": "casual",
  "durationMinutes": 10
}

Fields

name

string · Required

Display name for the project

Minimum length: 1

description

string · Optional

Short description of the project

include

string[] · Optional · Default: ["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py","**/*.go","**/*.rs"]

Glob patterns for files to include when analysing the codebase

exclude

string[] · Optional · Default: ["node_modules","dist",".next",".git","*.lock"]

Glob patterns for files to exclude

voiceModel

string · Optional

Preferred voice model for audio generation

theme

"casual" | "technical" | "entertaining" | "executive" · Optional · Default: "casual"

Podcast tone — casual, technical, entertaining, or executive

durationMinutes

integer · Optional · Default: 10

Target episode duration in minutes

Must be greater than 0

Themes

casual

Like chatting with a friend about code

technical

Detailed and thorough, aimed at engineers

entertaining

Light-hearted with humour and analogies

executive

High-level, focused on impact and decisions

JSON Schema

The full JSON Schema for the configuration file, generated from the Zod schema:

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Display name for the project"
    },
    "description": {
      "description": "Short description of the project",
      "type": "string"
    },
    "include": {
      "default": [
        "**/*.ts",
        "**/*.tsx",
        "**/*.js",
        "**/*.jsx",
        "**/*.py",
        "**/*.go",
        "**/*.rs"
      ],
      "description": "Glob patterns for files to include when analysing the codebase",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "exclude": {
      "default": [
        "node_modules",
        "dist",
        ".next",
        ".git",
        "*.lock"
      ],
      "description": "Glob patterns for files to exclude",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "voiceModel": {
      "description": "Preferred voice model for audio generation",
      "type": "string"
    },
    "theme": {
      "default": "casual",
      "description": "Podcast tone — casual, technical, entertaining, or executive",
      "type": "string",
      "enum": [
        "casual",
        "technical",
        "entertaining",
        "executive"
      ]
    },
    "durationMinutes": {
      "default": 10,
      "description": "Target episode duration in minutes",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "name",
    "include",
    "exclude",
    "theme",
    "durationMinutes"
  ],
  "additionalProperties": false
}