Skip to content

Install and first run

This guide gets you from a fresh checkout to running your first foxctl commands. It covers install paths, prerequisites, environment variables, and first-run verification.

DependencyVersionNotes
bashanyShell for scripts and hooks
gitanyClone and update the repo
makeanyBuild automation
jqanyJSON processing in scripts
Go1.26.1+Core language; non-CGO builds by default
DependencyNeeded for
Bunpackages/gui-agent web GUI and OpenCode plugin install flows

On macOS, the full path usually means Homebrew go, jq, and bun.

On Debian/Ubuntu, the full path usually means git, make, jq, curl, and a current Go toolchain.

Run the installer from the repo root:

Terminal window
./install.sh

This flow:

  • Verifies or installs core local dependencies
  • Optionally installs Bun for GUI and OpenCode plugin workflows
  • Builds the CLI and skills
  • Wires up provider integrations via scripts/init.sh
Terminal window
./install.sh --yes

Useful flags:

Terminal window
./install.sh --yes --skip-bun
./install.sh --yes --skip-provider-setup
./install.sh --yes --repo-dir "$HOME/src/foxctl"
FlagEffect
--skip-bunSkip Bun installation and bun install
--skip-provider-setupSkip scripts/init.sh provider bootstrap
--repo-dir <path>Set checkout directory when not run from a clone

If you already have the toolchain installed and want the repo-native flow:

Terminal window
make init

make init runs build, skills-install-all, and ./scripts/init.sh.

If you only want the CLI path:

Terminal window
make build
make skills-install
./scripts/init.sh

If foxctl on PATH reports that a command is unavailable in bundled mode, run ./bin/foxctl ... from this checkout.

foxctl loads env files in this order:

  1. ~/.foxctl/.env
  2. The git-root .env
  3. The current working directory .env
Terminal window
# Embeddings / semantic retrieval
FOXCTL_EMBEDDING_PROVIDER=openai_compat
FOXCTL_EMBEDDING_MODEL=text-embedding-qwen3-embedding-8b
FOXCTL_EMBEDDING_BASE_URL=http://127.0.0.1:1234/v1
FOXCTL_EMBEDDING_API_KEY=...
# Optional LLM-backed flows
OPENROUTER_API_KEY=...
ANTHROPIC_API_KEY=...
# Optional remote / cross-workspace storage
TURSO_DATABASE_URL=...
TURSO_AUTH_TOKEN=...
FOXCTL_POSTGRES_DSN=...

scripts/init.sh copies repo .env to ~/.foxctl/.env if present and no global env file exists yet.

When running skills in a restricted filesystem sandbox, set writable paths:

Terminal window
FOXCTL_STORAGE_ROOT=/tmp/foxctl/storage
FOXCTL_PATHS_CAS=/tmp/foxctl/cas
FOXCTL_OBS_DIR=/tmp/foxctl/observability
Terminal window
foxctl version
foxctl skills list
foxctl mcp status

Get oriented in a repo:

Terminal window
foxctl run code/semantic_search --input '{"format":"tree"}'

When you need call and reference navigation:

Terminal window
foxctl index repo build --workspace . --go --typescript --elixir

For non-Go repos, disable Go explicitly:

Terminal window
foxctl index repo build --workspace . --go=false --typescript --elixir
NeedCommand family
Find code semanticallyfoxctl run code/semantic_search
Extract snippetsfoxctl run code/smart_search
Build graph relationshipsfoxctl index repo build
Inspect graph neighborhoodsfoxctl index repo search and expand
Start an agentfoxctl agent spawn
Coordinate a roomfoxctl room ...
Refresh ACA/Obsidian contextfoxctl obsidian ...
Terminal window
make skills-install # Install built skills
make skills-install-all # Install all skill variants including CGO
./scripts/init.sh # Provider bootstrap and local wiring
SymptomCauseFix
foxctl command not found~/.local/bin not in PATHAdd export PATH="$HOME/.local/bin:$PATH" to your shell profile
Command 'run' not available in bundled modeUsing a wrapper binary from another installRun ./bin/foxctl ... from the repo checkout
Build fails with CGO errorsDefault build is non-CGO; CGO skills are optionalRun make build (non-CGO) instead of CGO-enabled builds
bun not found during installBun not installed or not in PATHInstall Bun or use ./install.sh --yes --skip-bun