Global Options

These options apply to every hxc command:

FlagDescription
--verbose, -vEnable verbose output
--versionPrint version and exit
--help, -hShow help for command

hxc init

Initialize a new HoxCore registry in the specified directory.

hxc init [path] [OPTIONS]

Arguments

ArgumentDescription
pathPath to initialize registry (default: current directory)

Options

FlagDescription
--no-gitSkip Git repository initialization
--no-commitSkip initial Git commit
--remote URLSet Git remote repository URL
--no-set-defaultDo not set this registry as the default

Examples

# Initialize in the current directory
hxc init

# Initialize in a specific path
hxc init my-registry

# Skip Git setup entirely
hxc init ~/work-projects --no-git

# Initialize with a remote and skip the initial commit
hxc init . --remote https://github.com/user/registry.git --no-commit

# Initialize without setting this registry as the default
hxc init my-registry --no-set-default

hxc create

Create a new entity in the registry.

hxc create {program|project|mission|action} title [OPTIONS]

Arguments

ArgumentDescription
typeType of entity to create: program, project, mission, or action
titleTitle of the entity (required)

Options

FlagDescription
--id CUSTOM_IDCustom ID for the entity (e.g., P-001). Auto-generated if omitted.
--description, -d DESCRIPTIONDescription of the entity
--status {active,completed,on-hold,cancelled,planned}Status of the entity (default: active)
--start-date START_DATEStart date in YYYY-MM-DD format (default: today)
--due-date DUE_DATEDue date in YYYY-MM-DD format
--category CATEGORYCategory path (e.g., software.dev/cli-tool)
--tags TAGS [TAGS ...]List of tags (space-separated)
--parent PARENTParent entity UID or ID
--template TEMPLATETemplate to use (e.g., software.dev/cli-tool.default)
--registry REGISTRYPath to registry (defaults to current or configured registry)
--no-commitSkip automatic git commit after creating

Examples

# Minimal project
hxc create project "New API"

# With custom ID and description
hxc create project "GraphQL Migration" --id P-042 -d "Migrate REST endpoints to GraphQL"

# Fully specified
hxc create project "GraphQL Migration" \
  --id P-042 \
  --category software.dev/api \
  --tags graphql migration backend \
  --parent prog_abc123 \
  --due-date 2024-12-31

# Create a mission from a template
hxc create mission "Q4 Launch" --template software.dev/cli-tool.default

# Target a specific registry
hxc create program "Platform Team" --registry ~/registries/work

# Skip commiting new project to git repository
hxc create project "GraphQL Migration" --id P-042 --no-commit

hxc delete

Delete an entity from the registry. The file is removed and the deletion is committed to Git.

hxc delete identifier [OPTIONS]

Prefer archiving over deletion

Deleting an entity removes its UID from the registry, which may break references in other entities. Consider setting the status to cancelled or completed instead to preserve history and referential integrity.

Arguments

ArgumentDescription
identifierID or UID of the entity to delete

Options

FlagDescription
--type, -t {program,project,mission,action}Type of entity to delete — only needed if the identifier is ambiguous
--force, -fSkip confirmation prompt
--registry REGISTRYPath to registry (defaults to current or configured registry)
--no-commitDo not commit deletion to git

Examples

# Delete by ID (with confirmation prompt)
hxc delete P-001

# Delete by UID, skip confirmation
hxc delete a8bc123 --force

# Disambiguate when the same ID exists across types
hxc delete P-001 --type project

# Target a specific registry
hxc delete P-001 --force --registry ~/registries/work

# Delete without commiting to git
hxc delete P-001 --no-commit

hxc list

List entities in the registry.

hxc list [{program|project|mission|action|all}] [OPTIONS]

Arguments

ArgumentDescription
typeType of items to list: program, project, mission, action, or all (default: project)

Options

FlagDescription
--status {active,completed,on-hold,cancelled,planned,any}Filter by status (default: any)
--tag, --tags TAGSFilter by tag — can be used multiple times
--category CATEGORYFilter by category
--parent PARENTFilter by parent ID
--id IDFilter by ID or UID
--query, -q QUERYSearch in title and description
--before BEFOREFilter items with due date before YYYY-MM-DD
--after AFTERFilter items with due date after YYYY-MM-DD
--max, -m MAXMaximum number of items to show (0 for all)
--sort {title,id,due_date,status,created,modified}Sort items by field (default: title)
--descSort in descending order
--format {table,yaml,json,id,pretty}Output format (default: table)

Examples

# List all projects (default type)
hxc list

# List all programs
hxc list program

# List active projects
hxc list project --status active

# Filter by tag (repeatable)
hxc list project --tag ai --tag python

# Search in title and description
hxc list all --query "machine learning"

# Filter by due date range and sort
hxc list project --before 2024-12-31 --sort due_date

# Output as JSON, limit to 10 results
hxc list all --format json --max 10

hxc show

Display the full details of a single entity.

hxc show identifier [OPTIONS]

Arguments

ArgumentDescription
identifierID or UID of the entity to show

Options

FlagDescription
--type {program,project,mission,action}Entity type — if not specified, all types will be searched
--format {pretty,yaml,json}Output format (default: pretty)
--rawDisplay raw file content without processing
--registry REGISTRYPath to registry (defaults to current or configured registry)

Examples

# Show entity with default pretty formatting
hxc show P-001
hxc show proj_abc123def456

# Output as YAML or JSON
hxc show P-001 --format yaml
hxc show P-001 --format json

# Display raw file content
hxc show P-001 --raw

# Disambiguate type and target a specific registry
hxc show P-001 --type project --registry ~/registries/work

hxc edit

Edit properties of an existing entity. All changes are applied atomically and committed to Git.

hxc edit identifier [OPTIONS]

Arguments

ArgumentDescription
identifierID or UID of the entity to edit

General options

FlagDescription
--type, -t {program,project,mission,action}Entity type — only needed if the identifier is ambiguous
--registry REGISTRYPath to registry (defaults to current or configured registry)
--dry-runShow what would be changed without modifying the file
--no-commitSkip automatic Git commit after a successful edit

Scalar fields

FlagDescription
--set-title VALUESet title
--set-description VALUESet description
--set-status VALUESet status
--set-id VALUESet custom ID
--set-start-date YYYY-MM-DDSet start date
--set-due-date YYYY-MM-DDSet due date
--set-completion-date YYYY-MM-DDSet completion date
--set-duration-estimate VALUESet duration estimate (e.g., 90d, 3w)
--set-category VALUESet category
--set-parent UIDSet parent UID
--set-template VALUESet template

Tags

FlagDescription
--add-tag TAGAdd a tag (can be used multiple times)
--remove-tag TAGRemove a tag (can be used multiple times)
--set-tags TAG [TAG ...]Replace all existing tags

Relationships

FlagDescription
--add-child UIDAdd a child UID
--remove-child UIDRemove a child UID
--set-children UID [UID ...]Replace all child UIDs
--add-related UIDAdd a related UID
--remove-related UIDRemove a related UID
--set-related UID [UID ...]Replace all related UIDs

Integrations

Integration flags accept a JSON object string so that URLs with colons are never ambiguous. Each --add-* flag can be repeated multiple times in a single command to add several items at once.

FlagDescription
--add-repository JSONAdd a repository (repeatable). JSON keys: name, url
--remove-repository NAMERemove a repository by name (repeatable)
--add-storage JSONAdd a storage entry (repeatable). JSON keys: name, provider, url
--remove-storage NAMERemove a storage entry by name (repeatable)
--add-database JSONAdd a database (repeatable). JSON keys: name, type, url
--remove-database NAMERemove a database by name (repeatable)
--add-tool JSONAdd a tool (repeatable). JSON keys: name, provider, url
--remove-tool NAMERemove a tool by name (repeatable)
--add-model JSONAdd a model (repeatable). JSON keys: id, provider, url
--remove-model IDRemove a model by ID (repeatable)
--add-kb JSONAdd a knowledge base (repeatable). JSON keys: id, url
--remove-kb IDRemove a knowledge base by ID (repeatable)

JSON object format for integrations

All --add-* integration flags expect a JSON object string. This avoids any ambiguity with URLs, which contain colons. Wrap the JSON in single quotes on the command line.

Examples

# Set scalar fields (automatically creates a Git commit)
hxc edit P-001 --set-status completed --set-completion-date 2026-06-30

# Preview changes without saving or committing
hxc edit P-001 --set-title "Revised Title" --dry-run

# Update properties without creating a Git commit
hxc edit P-001 --add-tag "manual-update" --no-commit

# Tag operations
hxc edit P-001 --add-tag production --add-tag deployed
hxc edit P-001 --remove-tag wip
hxc edit P-001 --set-tags python cli backend

# Relationship operations
hxc edit P-001 --add-child proj_abc123 --add-related proj_def456

# Add a repository (JSON object — URLs with colons are handled correctly)
hxc edit P-001 --add-repository '{"name": "main", "url": "https://github.com/org/repo"}'

# Add multiple repositories in a single command
hxc edit P-001 \
  --add-repository '{"name": "main", "url": "https://github.com/org/main"}' \
  --add-repository '{"name": "docs", "url": "https://github.com/org/docs"}'

# Add a storage entry
hxc edit P-001 --add-storage '{"name": "assets", "provider": "gdrive", "url": "https://drive.google.com/drive/folders/abc"}'

# Add a database
hxc edit P-001 --add-database '{"name": "main", "type": "postgres", "url": "postgres://user:pass@host:5432/db"}'

# Add a tool
hxc edit P-001 --add-tool '{"name": "jira", "provider": "atlassian", "url": "https://org.atlassian.net"}'

# Add a model
hxc edit P-001 --add-model '{"id": "gpt-4", "provider": "openai", "url": "https://api.openai.com"}'

# Add a knowledge base
hxc edit P-001 --add-kb '{"id": "kb-docs", "url": "https://kb.example.com"}'

# Remove integration entries by name or ID
hxc edit P-001 --remove-repository legacy
hxc edit P-001 --remove-tool old-tracker

# Disambiguate type and target a specific registry
hxc edit P-001 --type project --registry ~/registries/work

hxc get

Retrieve a specific property value from an entity. Useful for scripting and piping output.

hxc get identifier property [OPTIONS]

Arguments

ArgumentDescription
identifierID or UID of the entity
propertyProperty name to retrieve (e.g., title, status, tags, all)

Options

FlagDescription
--type, -t {program,project,mission,action}Entity type — only needed if the identifier is ambiguous
--format, -f {raw,yaml,json,pretty}Output format (default: raw)
--index INDEXFor list properties, get the item at a specific index
--key KEYFor complex properties, filter by key:value (e.g., name:github)
--registry REGISTRYPath to registry (defaults to current or configured registry)

Examples

# Get a scalar property
hxc get P-001 title
hxc get P-001 status

# Get all properties as YAML
hxc get P-001 all --format yaml

# Get a list property as JSON
hxc get P-001 tags --format json

# Get the first tag by index
hxc get P-001 tags --index 0

# Filter a complex list property by key
hxc get P-001 repositories --key name:github

# Disambiguate type and target a specific registry
hxc get P-001 title --type project --registry ~/registries/work

hxc registry

Manage registry locations.

hxc registry {path|list} [OPTIONS]

Subcommands

SubcommandDescription
hxc registry pathGet or set the registry path
hxc registry listList all known registries

hxc registry path options

FlagDescription
--set PATHSet the registry path

Examples

# Show the current registry path
hxc registry path

# Set the default registry path
hxc registry path --set /path/to/my-registry

# List all known registries
hxc registry list

hxc validate

Validate registry integrity and consistency — checks required fields, UID uniqueness, relationships, status values, and entity types.

hxc validate [OPTIONS]

Read-only operation

hxc validate never modifies any files. The --fix flag is accepted but not yet implemented.

Options

FlagDescription
--verbose, -vShow detailed validation information for each check
--fixNot yet implemented — accepted but has no effect
--registry REGISTRYPath to registry (defaults to current or configured registry)

Examples

# Validate the current or configured registry
hxc validate

# Show detailed output for each check
hxc validate --verbose

# Validate a specific registry
hxc validate --registry ~/registries/work

hxc mcp

Start the Model Context Protocol (MCP) server, giving compatible LLM clients — such as Claude Desktop — live read access to your registry.

hxc mcp [OPTIONS]

stdio transport

The server communicates over stdio, which is the standard expected by MCP-compatible clients. Only stdio is currently supported.

Options

FlagDescription
--registry REGISTRYPath to the registry (defaults to current or configured registry)
--transport {stdio}Transport protocol (default: stdio). Only stdio is currently supported.
--capabilitiesShow server capabilities (tools, resources, prompts) and exit without starting
--read-onlyStart in read-only mode — only read tools are registered. Write tools (create_entity, edit_entity, delete_entity) are omitted from the server's capabilities.

Examples

# Start the MCP server using the default or configured registry
hxc mcp

# Start with a specific registry
hxc mcp --registry ~/registries/work

# Inspect available tools, resources, and prompts without starting
hxc mcp --capabilities

# Start in read-only mode (write tools are not exposed to the LLM)
hxc mcp --read-only

# Read-only with explicit registry
hxc mcp --registry ~/registries/work --read-only

Connecting to Claude Desktop

Add HoxCore to your claude_desktop_config.json to give Claude live access to your registry:

{
  "mcpServers": {
    "hoxcore": {
      "command": "hxc",
      "args": ["mcp", "--registry", "/path/to/your/registry"]
    }
  }
}

See the AI Features page for full integration details.