Skip to main content

Synopsis

PROJECT_NAME is optional. When --domain and --framework are both provided without a positional argument, a kebab-case slug is auto-generated (for example, healthcare-pydanticai-app). When neither the project name nor the required flags are present, the interactive wizard launches automatically.
Run create-context-graph --list-domains to see all 22 available domain IDs before scaffolding.

Project options

TEXT
Human-readable project name. Used as the root directory name (after converting to a kebab-case slug). Optional — if omitted while --domain and --framework are supplied, the name is auto-generated as {domain}-{framework}-app.
TEXT
Domain ID that selects the industry ontology to use. Examples: financial-services, healthcare, software-engineering. Run --list-domains to see the full list of 22 built-in IDs. Mutually exclusive with --custom-domain in terms of ontology source, though both set the domain context.
choice
Agent framework to scaffold the backend with. Accepted values:The value is case-insensitive.
PATH
Directory where the generated project is written. Defaults to ./<project-slug> in the current working directory. The target directory must not already exist or must be empty.

Data options

flag
default:"false"
Generate synthetic demo data and write it to data/fixtures.json in the output project. Uses static placeholder data drawn from domain-specific name pools by default. Pass --anthropic-api-key to upgrade to realistic LLM-generated data (80–90 entities, 25+ documents, 8–12 decision traces).
flag
default:"false"
Convenience shortcut that expands to --reset-database --demo-data --ingest. Scaffolds the project, generates demo data, clears the Neo4j database, and ingests everything in a single step.
--demo runs MATCH (n) DETACH DELETE n against your Neo4j instance before ingesting. Do not use it against a database that contains data you want to keep.
flag
default:"false"
Ingest generated fixture data into Neo4j immediately after scaffolding. Requires a reachable Neo4j instance. Uses neo4j-agent-memory MemoryClient when available, falling back to the direct neo4j driver.
flag
default:"false"
Clear all existing data from Neo4j (MATCH (n) DETACH DELETE n) before ingesting. Useful when switching domains on a shared Neo4j instance to avoid cross-domain entity collisions.
TEXT
SaaS connector to enable. Can be specified multiple times to enable several connectors. Each connector imports real data from the named service instead of (or in addition to) synthetic demo data.Supported values: github, slack, jira, notion, gmail, gcal, salesforce.Connectors run at scaffold time and are also generated into the project so you can re-import with make import.

Neo4j options

TEXT
default:"neo4j://localhost:7687"
Neo4j Bolt connection URI. Accepts neo4j://, neo4j+s://, bolt://, and bolt+s:// schemes.Environment variable: NEO4J_URI
TEXT
default:"neo4j"
Neo4j authentication username.Environment variable: NEO4J_USERNAME
TEXT
default:"password"
Neo4j authentication password.Environment variable: NEO4J_PASSWORD
PATH
Path to a Neo4j Aura .env file that contains NEO4J_URI, NEO4J_USERNAME, and NEO4J_PASSWORD. When provided, these values override the individual flags and the neo4j_type is automatically set to aura. You can download this file directly from the Neo4j Aura console.
flag
default:"false"
Use @johnymontana/neo4j-local for a lightweight local Neo4j instance. No Docker required, but Node.js must be installed. Sets neo4j_type to local and adds make neo4j-start / make neo4j-stop targets to the generated Makefile.
The neo4j_type value (docker, aura, local, or existing) controls which Makefile targets are generated. Docker mode adds make docker-up; local mode adds make neo4j-start; Aura and existing modes skip database startup targets entirely.

API keys

TEXT
Anthropic API key (sk-ant-...). Enables two features:
  1. LLM-powered data generation — realistic entity names, professional documents, and multi-step decision traces via the Anthropic API when --demo-data is passed.
  2. Custom domain generation — required when --custom-domain is used.
Environment variable: ANTHROPIC_API_KEY
TEXT
OpenAI API key. Required at runtime for the openai-agents framework. Also used by LangGraph when configured with OpenAI models. When set in the generated project’s .env, conversation memory automatically upgrades from local sentence-transformers embeddings to OpenAI text-embedding-3-small.Environment variable: OPENAI_API_KEY
TEXT
Google / Gemini API key. Required at runtime for the google-adk framework. A warning is shown during scaffolding if google-adk is selected without this key.Environment variable: GOOGLE_API_KEY
API keys passed on the command line are written into the generated project’s .env file. The .env is listed in .gitignore and is never committed to version control. Use environment variables in CI/CD pipelines rather than passing keys inline.

Advanced options

TEXT
Natural language description of a custom domain. The LLM generates a complete ontology YAML — entity types, relationships, agent tools, system prompt, demo scenarios, and document templates — from your description. Requires --anthropic-api-key.Example: "veterinary clinic managing patients, owners, appointments, and treatments"
flag
default:"false"
Print a summary of what would be generated (project name, slug, domain, framework, Neo4j type, data source, output path) and exit without creating any files. Useful for validating flag combinations in scripts.
flag
default:"false"
Enable verbose DEBUG-level logging during scaffolding and data generation. Useful for diagnosing template rendering errors or LLM API failures.
flag
Print all available domain IDs and their display names, then exit. No other flags are required.
flag
Print the installed package version and exit.
flag
Show the help message with a summary of all options and exit.

Interactive vs. non-interactive mode

The CLI operates in two modes depending on which flags are provided. Interactive mode launches when --domain or --framework is missing. The 7-step Questionary wizard collects all configuration interactively: project name, domain, framework, data source, Neo4j connection type, and API keys. Non-interactive mode runs when --domain (or --custom-domain) and --framework are both provided. The wizard is skipped entirely. PROJECT_NAME is optional — if omitted, the slug is auto-generated as {domain}-{framework}-app. This mode is safe for use in CI/CD pipelines and automated scripts.
When running in a non-TTY environment (such as a CI pipeline) without --domain and --framework, the CLI exits with an error rather than hanging on wizard prompts.

Environment variables

CLI flags always take precedence over environment variables. Set these in your shell profile or a .env file before running the tool to avoid repeating credentials on every invocation.

Examples

Launch the interactive wizard

Scaffold without any prompts

Auto-generate the project name

When --domain and --framework are provided but PROJECT_NAME is omitted, a slug is generated automatically:

LLM-powered data generation

Pass your Anthropic API key to generate realistic entities, documents, and decision traces instead of static placeholder data:

Generate from a custom domain description

Enable SaaS connectors

Scaffold and ingest into Neo4j

One-step demo (scaffold + generate + reset + ingest)

Reset Neo4j before ingesting new domain data

Use a Neo4j Aura cloud database

Write to a custom output directory

Preview what would be generated

List all available domains