NovaKitv1.0

NovaKit CLI

AI-powered coding agent for the terminal with multi-provider support, semantic search, and extensible tools

NovaKit CLI is an AI-powered coding agent that brings intelligent code assistance directly to your terminal. It supports multiple LLM providers, persistent sessions, semantic code search, and extensible tools.

Current version: 0.1.9 | Requires Node.js 18+

Features

  • Multi-Provider Support - OpenAI, Anthropic, GitHub Copilot, OpenRouter, Groq, and more
  • Interactive TUI - Rich terminal interface with markdown rendering
  • Agent Mode - AI with access to file operations, shell commands, and web search
  • Approval Modes - Control autonomy: read-only, auto, or full
  • Background Tasks - Spawn parallel agents for concurrent work
  • Session Management - Resume conversations, auto-compact, export transcripts
  • Semantic Code Search - Vector-indexed codebase for intelligent context retrieval
  • LSP Integration - Go-to-definition, find references, hover info, diagnostics
  • Memory System - Persistent memories across sessions
  • MCP Integration - Extend capabilities with Model Context Protocol servers
  • Custom Commands & Agents - Define your own slash commands and specialized agents

Installation

npm install -g @novakit/cli
pnpm add -g @novakit/cli

Quick Start

# Start the TUI (opens provider connect if not authenticated)
novakit

# With a specific model
novakit chat -m gpt-4o

# Resume a previous session
novakit -r <session-id>

# One-shot prompt
novakit chat -p "Explain this codebase"

Keyboard Shortcuts

Global Shortcuts

ShortcutAction
Ctrl+LSwitch model
Ctrl+NNew session
Ctrl+OConnect provider
Ctrl+CCancel current operation (2x to quit)
Ctrl+WQuit immediately
Ctrl+ZUndo last file change
Ctrl+YRedo last undone change
Ctrl+XToggle expand/collapse messages
Esc EscRewind to last checkpoint
TabCycle approval mode (read-only → auto → full)
Shift+TabCycle modes (Agent → Review → Plan)
Alt+TToggle task panel
/Open command palette
@Attach file
#Save/attach memory
$Save/insert snippet
*Toggle favorite (in model selector)

Input Shortcuts

ShortcutAction
Ctrl+UClear input line
EscapeClear input (if not empty)
Ctrl+AJump to beginning of line
Ctrl+EJump to end of line
Ctrl+NInsert new line (multiline input)
/ Navigate input history

Commands

Authentication

# Login with API key
novakit auth login
novakit auth login --provider anthropic

# Check auth status
novakit auth status

# Logout
novakit auth logout
novakit auth logout --provider openai

Chat

# Start interactive chat
novakit chat

# Use specific model
novakit chat -m claude-sonnet-4-20250514

# Resume previous session
novakit chat -r <session-id>

# Set approval mode
novakit chat -a read-only    # Read-only mode (exploration only)
novakit chat -a auto         # Auto mode (default)
novakit chat -a full         # Full mode (auto-approve all)
novakit chat --yolo          # Alias for --approval-mode full

# Headless mode (for automation/scripts)
novakit chat -p "Fix the bug" --headless

Providers

# List configured providers
novakit provider list

# Show available presets
novakit provider presets

# Add provider from preset
novakit provider add anthropic --preset anthropic

# Add custom provider
novakit provider add my-provider \
  --endpoint https://api.example.com/v1 \
  --protocol openai \
  --model gpt-4

# Switch active provider
novakit provider use anthropic

# Remove provider
novakit provider remove openai

Sessions

# List sessions
novakit session list
novakit session list --all

# Resume session
novakit session resume <session-id>

# Rename session
novakit session rename <session-id> "Feature Implementation"

# Compact session (reduce context)
novakit session compact <session-id>

# Export session
novakit session export <session-id> --format markdown
novakit session export <session-id> --format json

# Delete session
novakit session delete <session-id>

Configuration

# Show all config
novakit config list

# Get specific value
novakit config get defaultModel

# Set value
novakit config set maxTokens 8192
novakit config set autoConfirmWrites true

# Initialize project config
novakit config init

# Show config paths
novakit config path

# Reset to defaults
novakit config reset

Semantic Search Index

# Build vector index
novakit index build

# Check index status
novakit index status

# Search codebase
novakit index search "authentication logic"

Shell Completions

novakit completion bash >> ~/.bashrc
# Or
novakit completion bash > /etc/bash_completion.d/novakit
mkdir -p ~/.zsh/completions
novakit completion zsh > ~/.zsh/completions/_novakit
# Add to ~/.zshrc:
#   fpath=(~/.zsh/completions $fpath)
#   autoload -Uz compinit && compinit
mkdir -p ~/.config/fish/completions
novakit completion fish > ~/.config/fish/completions/novakit.fish

Other Commands

# Check API quota/usage
novakit usage

# Run diagnostics
novakit doctor

# Start server for IDE extensions
novakit serve

# Check for updates
novakit update

In-Chat Commands

Type / to open the command palette:

CommandDescription
/new-sessionStart new session
/session-listList sessions
/compactSummarize conversation to reduce context
/switch-modelSwitch model
/provider-connectConnect a provider
/index-buildBuild semantic search index
/memoriesList saved memories
/commitGenerate AI commit message
/diffShow git status/diff
/undoUndo last file change
/redoRedo last undone change
/historyShow recent file changes
/toolsOpen Tool Manager
/checkpointCreate manual checkpoint
/rewindRewind to last checkpoint
/spawnSpawn a background task
/tasksList background tasks
/mcp-statusShow MCP server status
/approval-modeCycle approval mode
/quotaShow API quota/balance
/helpShow keyboard shortcuts
/quitExit chat

Configuration

Config Locations

TypeLocation
Global config~/.novakit/config.json
Project config.novakit/config.json
Credentials~/.novakit/credentials.d/
Sessions~/.novakit/sessions/
Memories~/.novakit/memory/
Vector Index.novakit/index/
Custom Commands~/.novakit/commands.json
Custom Agents~/.novakit/agents.json
MCP Servers~/.novakit/mcp.json
LSP Servers~/.novakit/lsp.json
Checkpoints.novakit/checkpoints/
Context FilesNOVAKIT.md
Ignore Patterns.novakitignore

Config Options

{
  "defaultModel": "claude-sonnet-4-20250514",
  "maxTokens": 16384,
  "maxToolIterations": 10,
  "autoConfirmWrites": false,
  "showTokenUsage": true,
  "contextThreshold": 0.9,
  "autoCompactEnabled": true,
  "useVectorIndex": true,
  "maxContextChunks": 10,
  "maxContextTokens": 8000,
  "minContextScore": 0.15,
  "favoriteModels": ["gpt-4o", "claude-sonnet-4-20250514"],
  "disabledTools": [],
  "approvalMode": "auto"
}
OptionTypeDefaultDescription
defaultModelstring-Default model to use
maxTokensnumber16384Maximum tokens per request
maxToolIterationsnumber10Max tool calls per response
autoConfirmWritesbooleanfalseSkip file operation confirmations
contextThresholdnumber0.9Auto-compact threshold (0-1)
useVectorIndexbooleantrueEnable semantic code search
approvalModestring"auto"Default: read-only, auto, or full

Supported Providers

ProviderProtocolDefault ModelAuth
Anthropicanthropicclaude-sonnet-4-5-20250929API Key
OpenAIopenaigpt-4o-miniAPI Key
GitHub Copilotopenaigpt-4oOAuth
OpenRouteropenaiopenai/gpt-4o-miniAPI Key
Groqopenaimoonshotai/kimi-k2API Key
NovaKitnovakitopenai/gpt-oss-120bAPI Key

Adding Custom Providers

novakit provider add ollama \
  --endpoint http://localhost:11434/v1 \
  --protocol openai \
  --model llama3.2

Agent Tools

ToolDescription
readRead file contents with line numbers
writeCreate new files
editModify existing files
apply_patchApply unified diff patches
globFind files by pattern
grepSearch file contents with regex
bashExecute shell commands
list_directoryList directory contents
web_searchSearch the web
web_fetchFetch and analyze web pages
vector_searchSemantic code search
visionAnalyze images
save_memorySave persistent memories
lsp_goto_definitionNavigate to symbol definition
lsp_find_referencesFind all references
lsp_hoverGet type info and docs
lsp_diagnosticsGet file errors/warnings
todosTrack multi-step tasks
spawn_agentSpawn specialized subagents

Tool Modes

  • Agent Mode (default) - Full access to all tools
  • Review Mode - Collects changes for batch review
  • Plan Mode - Read-only tools for exploration

Toggle with Shift+Tab.

Approval Modes

ModeDescriptionUse Case
read-onlyOnly exploration toolsSafe exploration
autoConfirm file changes and shell commandsNormal development
fullAuto-approve all operationsTrusted automation
# Change via CLI
novakit chat -a read-only
novakit chat --yolo  # Alias for -a full

# Or press Tab to cycle modes during chat

Background Tasks

Spawn parallel agents to work concurrently:

# In chat
/spawn Run all tests and fix any failures
/spawn Generate API documentation

# Monitor
/tasks

# Kill a task
/task-kill <id>

Task Status

StatusIconDescription
pendingWaiting to start
running🔄Actively executing
completedFinished successfully
failedEncountered error
cancelled⏹️Manually stopped

Context Files (NOVAKIT.md)

Create NOVAKIT.md files to provide persistent context:

# Project: My App

## Architecture
- React frontend with TypeScript
- Express backend with PostgreSQL

## Conventions
- Use functional components with hooks
- All API responses follow { data, error, meta } format

## Do NOT modify
- src/legacy/ (deprecated)

@docs/api-reference.md

Use @path/to/file.md to import content from other files.

Memory System

Save important information that persists across sessions:

# In chat, use # prefix
#project-context This is a React app using TypeScript...

# Or type # to open the memory picker

Memories are stored as markdown files in ~/.novakit/memory/ (global) or .novakit/memory/ (project).

Custom Commands

Create custom slash commands in ~/.novakit/commands.json:

{
  "commands": [
    {
      "id": "review",
      "name": "Code Review",
      "description": "Review current file",
      "type": "prompt",
      "content": "Review this code for bugs and security issues:\n\n{{input}}"
    },
    {
      "id": "git-log",
      "name": "Git Log",
      "type": "bash",
      "content": "git log --oneline -10",
      "showOutput": true
    }
  ]
}

Custom Agents

Define specialized agents in ~/.novakit/agents.json:

{
  "agents": [
    {
      "id": "reviewer",
      "name": "Code Reviewer",
      "icon": "🔍",
      "systemPrompt": "You are an expert code reviewer...",
      "model": "claude-sonnet-4-20250514",
      "includeContext": true
    }
  ]
}

MCP Integration

Configure MCP servers in ~/.novakit/mcp.json:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "your-token" }
    }
  }
}

Use /mcp-status, /mcp-connect, /mcp-disconnect to manage.

LSP Integration

Configure LSP servers in ~/.novakit/lsp.json:

{
  "servers": [
    {
      "name": "typescript",
      "languages": [".ts", ".tsx", ".js", ".jsx"],
      "command": "typescript-language-server",
      "args": ["--stdio"],
      "enabled": true
    }
  ],
  "autoDetect": true,
  "autoStart": true
}

Default LSP Servers

LanguageServerExtensions
TypeScript/JStypescript-language-server.ts, .tsx, .js, .jsx
Pythonpylsp.py
Gogopls.go
Rustrust-analyzer.rs

Custom Ignore File

Control which files NovaKit ignores in .novakitignore:

# Large data files
*.csv
data/

# Sensitive files
.env*
secrets/

# Generated files
dist/
build/

IDE Extensions (Server Mode)

NovaKit runs as a JSON-RPC server for IDE integration:

novakit serve

Protocol

Uses JSON-RPC 2.0 over stdio:

MethodDescription
initializeInitialize with project path
chatSend message, receive streaming response
tool/confirmConfirm or deny tool execution
session/listList available sessions
abortCancel current operation
shutdownGracefully shutdown

Security

File Access

  • Use allowedReadRoots to restrict file access
  • Write operations require confirmation (unless autoConfirmWrites: true)
  • Dangerous bash commands are blocked

Credentials

  • API keys stored with restricted permissions (0600)
  • Keys never logged or displayed in full
  • Environment variable fallback: NOVAKIT_API_KEY

Blocked Commands

  • rm -rf / and system path deletions
  • shutdown, reboot, halt
  • Fork bombs
  • Device file writes

Environment Variables

VariableDescription
NOVAKIT_API_KEYDefault API key (fallback)
NOVAKIT_CONFIG_DIRCustom config directory
NO_COLORDisable colored output

Telemetry

NovaKit collects anonymous usage data (optional):

Collected: CLI version, session duration, tool execution stats, feature usage

NOT collected: File paths, code content, prompts, API keys, PII

# Opt out
novakit config set telemetryEnabled false

Troubleshooting

Run Diagnostics

novakit doctor

Common Issues

"Not authenticated"

novakit auth login --provider <provider-name>

"Model not found"

  • Verify model name matches provider's naming
  • Check novakit provider presets for defaults

High context usage

/compact
# Or
novakit session compact <session-id>

GitHub Copilot auth issues

  • Tokens expire quickly (~30 min)
  • Reconnect with Ctrl+O

Best Practices

Start in Read-Only Mode

Use novakit chat -a read-only for safe exploration of unfamiliar code.

Use NOVAKIT.md for Context

Create a NOVAKIT.md in your project root with architecture and conventions.

Build the Vector Index

Run novakit index build for large codebases to enable semantic search.

Use Sessions for Complex Tasks

Resume conversations with novakit chat -r <session-id> to maintain context.

Leverage Checkpoints

Use /checkpoint before risky changes, /rewind or Esc Esc to rollback.

On this page