Global Options
These options apply to every hxc command:
| Flag | Description |
--verbose, -v | Enable verbose output |
--version | Print version and exit |
--help, -h | Show help for command |
hxc init
Initialize a new HoxCore registry in the specified directory.
hxc init [path] [OPTIONS]
Arguments
| Argument | Description |
path | Path to initialize registry (default: current directory) |
Options
| Flag | Description |
--no-git | Skip Git repository initialization |
--no-commit | Skip initial Git commit |
--remote URL | Set Git remote repository URL |
--no-set-default | Do 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
| Argument | Description |
type | Type of entity to create: program, project, mission, or action |
title | Title of the entity (required) |
Options
| Flag | Description |
--id CUSTOM_ID | Custom ID for the entity (e.g., P-001). Auto-generated if omitted. |
--description, -d DESCRIPTION | Description of the entity |
--status {active,completed,on-hold,cancelled,planned} | Status of the entity (default: active) |
--start-date START_DATE | Start date in YYYY-MM-DD format (default: today) |
--due-date DUE_DATE | Due date in YYYY-MM-DD format |
--category CATEGORY | Category path (e.g., software.dev/cli-tool) |
--tags TAGS [TAGS ...] | List of tags (space-separated) |
--parent PARENT | Parent entity UID or ID |
--template TEMPLATE | Template to use (e.g., software.dev/cli-tool.default) |
--registry REGISTRY | Path to registry (defaults to current or configured registry) |
--no-commit | Skip 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
| Argument | Description |
identifier | ID or UID of the entity to delete |
Options
| Flag | Description |
--type, -t {program,project,mission,action} | Type of entity to delete — only needed if the identifier is ambiguous |
--force, -f | Skip confirmation prompt |
--registry REGISTRY | Path to registry (defaults to current or configured registry) |
--no-commit | Do 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
| Argument | Description |
type | Type of items to list: program, project, mission, action, or all (default: project) |
Options
| Flag | Description |
--status {active,completed,on-hold,cancelled,planned,any} | Filter by status (default: any) |
--tag, --tags TAGS | Filter by tag — can be used multiple times |
--category CATEGORY | Filter by category |
--parent PARENT | Filter by parent ID |
--id ID | Filter by ID or UID |
--query, -q QUERY | Search in title and description |
--before BEFORE | Filter items with due date before YYYY-MM-DD |
--after AFTER | Filter items with due date after YYYY-MM-DD |
--max, -m MAX | Maximum number of items to show (0 for all) |
--sort {title,id,due_date,status,created,modified} | Sort items by field (default: title) |
--desc | Sort 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
| Argument | Description |
identifier | ID or UID of the entity to show |
Options
| Flag | Description |
--type {program,project,mission,action} | Entity type — if not specified, all types will be searched |
--format {pretty,yaml,json} | Output format (default: pretty) |
--raw | Display raw file content without processing |
--registry REGISTRY | Path 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
| Argument | Description |
identifier | ID or UID of the entity to edit |
General options
| Flag | Description |
--type, -t {program,project,mission,action} | Entity type — only needed if the identifier is ambiguous |
--registry REGISTRY | Path to registry (defaults to current or configured registry) |
--dry-run | Show what would be changed without modifying the file |
--no-commit | Skip automatic Git commit after a successful edit |
Scalar fields
| Flag | Description |
--set-title VALUE | Set title |
--set-description VALUE | Set description |
--set-status VALUE | Set status |
--set-id VALUE | Set custom ID |
--set-start-date YYYY-MM-DD | Set start date |
--set-due-date YYYY-MM-DD | Set due date |
--set-completion-date YYYY-MM-DD | Set completion date |
--set-duration-estimate VALUE | Set duration estimate (e.g., 90d, 3w) |
--set-category VALUE | Set category |
--set-parent UID | Set parent UID |
--set-template VALUE | Set template |
Tags
| Flag | Description |
--add-tag TAG | Add a tag (can be used multiple times) |
--remove-tag TAG | Remove a tag (can be used multiple times) |
--set-tags TAG [TAG ...] | Replace all existing tags |
Relationships
| Flag | Description |
--add-child UID | Add a child UID |
--remove-child UID | Remove a child UID |
--set-children UID [UID ...] | Replace all child UIDs |
--add-related UID | Add a related UID |
--remove-related UID | Remove 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.
| Flag | Description |
--add-repository JSON | Add a repository (repeatable). JSON keys: name, url |
--remove-repository NAME | Remove a repository by name (repeatable) |
--add-storage JSON | Add a storage entry (repeatable). JSON keys: name, provider, url |
--remove-storage NAME | Remove a storage entry by name (repeatable) |
--add-database JSON | Add a database (repeatable). JSON keys: name, type, url |
--remove-database NAME | Remove a database by name (repeatable) |
--add-tool JSON | Add a tool (repeatable). JSON keys: name, provider, url |
--remove-tool NAME | Remove a tool by name (repeatable) |
--add-model JSON | Add a model (repeatable). JSON keys: id, provider, url |
--remove-model ID | Remove a model by ID (repeatable) |
--add-kb JSON | Add a knowledge base (repeatable). JSON keys: id, url |
--remove-kb ID | Remove 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
| Argument | Description |
identifier | ID or UID of the entity |
property | Property name to retrieve (e.g., title, status, tags, all) |
Options
| Flag | Description |
--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 INDEX | For list properties, get the item at a specific index |
--key KEY | For complex properties, filter by key:value (e.g., name:github) |
--registry REGISTRY | Path 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
| Subcommand | Description |
hxc registry path | Get or set the registry path |
hxc registry list | List all known registries |
hxc registry path options
| Flag | Description |
--set PATH | Set 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
| Flag | Description |
--verbose, -v | Show detailed validation information for each check |
--fix | Not yet implemented — accepted but has no effect |
--registry REGISTRY | Path 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
| Flag | Description |
--registry REGISTRY | Path to the registry (defaults to current or configured registry) |
--transport {stdio} | Transport protocol (default: stdio). Only stdio is currently supported. |
--capabilities | Show server capabilities (tools, resources, prompts) and exit without starting |
--read-only | Start 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.