Skip to main content
Glama
NOTE

NAVIG 3.x is a stable release. The CLI contract (navig <resource> <action>) is stable and changes follow semantic versioning. Review the CHANGELOG before upgrading across major versions. As with any tool that operates live infrastructure, use read-only inspection and dry runs first in production-critical environments.


See it in action

Real sessions, recorded from the tapes in tools/showcase/ against lab hosts — nothing typed into the output, nothing edited out. All eleven scenes, the videos and how they were made: docs/showcase · videos (and a 90-second trailer) on the NAVIG 3.25.0 release.


Related MCP server: supabase-mcp

Prerequisites

NAVIG CLI uses Nerd Font glyphs for Powerline-style status bars and icons. Install once per machine:

pwsh navig/builtin/scripts/Install-NerdFont.ps1

Platform

Recommended terminal

Additional step

Windows

Windows Terminal

Script patches automatically

macOS

iTerm2 or Kitty

Set font to JetBrainsMono Nerd Font Mono after script runs

Linux

Kitty, Alacritty, GNOME Terminal

Set font manually after script runs

VS Code is patched automatically on all platforms. Restart VS Code and your terminal after running the script.

Offline install: set $env:NAVIG_FONT_ZIP to a local zip path, or pass -LocalZip <path>.


What is NAVIG?

NAVIG is a terminal-first infrastructure CLI and runtime for people who are tired of juggling SSH sessions, scattered scripts, disconnected dashboards, and ad-hoc credentials just to keep their systems running.

It was built by one person — a solo founder managing a growing swarm of remote machines, projects, and operational overhead with no platform team to fall back on. The problem wasn't the terminal. The problem was everything fragmented around it: SSH in one place, SFTP in another, databases behind dashboards, secrets pasted into notes, logs spread across providers, and no single coherent surface to operate from.

NAVIG is the result of refusing to accept that reality.

It gives operators direct control over remote hosts, databases, containers, files, tunnels, and workflows — from one place, with structure, memory, and optional AI assistance that stays out of the way until it's actually useful.

One operator surface. For operators.


NAVIG Core (free) vs NAVIG Deck (paid)

NAVIG ships in two layers with a deliberate split:

  • NAVIG Core (this repo) — Apache-2.0 open source. The daemon, CLI, agent runtime, vault, scheduler, mesh, MCP server, Telegram text bot, gateway. Free forever, no host limits via the CLI, no telemetry.

  • NAVIG Deck — the polished UI cockpit (proprietary; signed PyPI wheel installed via pip install navig[deck]). Hosts inventory, mesh topology, vault UI, mission queue, workflow runner, Telegram Mini App. Free on one host; Harbor Pass / Max add host scale and the full operator module suite — see navig.run/deck.

The split is honest: the daemon is open and audit-able, the Deck is free on one host, and Harbor subscriptions add host scale, every operator module and all of Harbor Bay. See navig.run/buy for the plans.

What's free, forever, no matter what:

  • The entire CLI — unlimited navig ssh, unlimited hosts you connect to

  • Telegram text bot (/start, /run, /status, all commands)

  • Agent runtime (navig ask, conversation memory, missions)

  • VS Code MCP integration

  • Vault, scheduler, mesh peer discovery

  • All updates, including major versions

What a Harbor subscription pays for is scale and the operator suite; the daemon never will be paid.


Why NAVIG?

Most operators already have SSH. What they don't have is everything that should live around it:

You probably have

NAVIG adds

SSH client

Multi-host management with one active context

Ad-hoc shell scripts

Named workflows with dry-run and preview

Secrets in .env files

Encrypted vault with context-aware resolution

grep in log files

Structured log tailing across hosts

Copy-paste from Stack Overflow

AI operator layer with your infra as context

One terminal per machine

Mesh networking and command delegation

NAVIG is not a configuration management tool (not Ansible). It is not a deployment platform (not Kubernetes). It is a control plane for humans — the thing you reach for when you need to do something to a real machine, right now, without writing a playbook.


Features

Capability

Description

Multi-host management

Add, switch, test, and operate remote hosts over SSH

Remote execution

Run commands, pipe stdin, use base64 encoding for complex scripts

Database operations

Query, dump, restore, and maintain MySQL, MariaDB, and PostgreSQL

File operations

Upload, download, read, edit, and list remote files safely

Docker & containers

Inspect containers, restart services, tail logs, manage compose stacks

Web server control

Manage nginx/apache configs, test changes, reload safely

Encrypted vault

Store credentials without leaving secrets in plaintext config files

Workflows

Define repeatable multi-step flows with dry-run and preview support

AI operator layer

Natural language assistance for infra tasks — CLI, Telegram, or MCP

Mesh networking

LAN peer-to-peer node discovery and command delegation

MCP integration

Expose tools and resources to AI editors and compatible clients

Daemon & gateway

Background service with Telegram and Matrix channel support

Telegram Manager

Full-account Telegram organizer (MTProto): search/move/forward/dedupe + a business-conversation AI catcher, reply-keyword actions, deletion alerts, and rich-message replies — owner-only (docs · cheatsheet)

GitHub mirroring

navig github — search, backup, and clone GitHub repos (flat or nested), token from the vault

TikTok

navig tiktok — download videos, extract metadata + top comments, and AI-brief any link (via yt-dlp)


Install

Linux / macOS / WSL

curl -fsSL https://navig.run/install.sh | bash

Windows (PowerShell)

iwr -useb https://navig.run/install.ps1 | iex

pipx

pipx install navig

pip

pip install navig

Install options

Option

Example

Description

--version

bash -s -- --version <release>

Pin a specific version

--dev

bash -s -- --dev

Include development extras

--method git

bash -s -- --method git

Install from source instead of PyPI

NAVIG_EXTRAS

NAVIG_EXTRAS=voice,keyring

Enable optional extras

NAVIG_INSTALL_PROFILE

NAVIG_INSTALL_PROFILE=operator

Choose the first-run bootstrap profile

Telegram bootstrap is available through the installer pipeline after install:

NAVIG_TELEGRAM_BOT_TOKEN="<your-bot-token>" navig init --profile operator

Development Install

git clone https://github.com/navig-run/core.git navig
cd navig
pip install -e ".[dev]"

With a virtual environment (optional but recommended):

git clone https://github.com/navig-run/core.git navig
cd navig
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e ".[dev]"

Verify

navig --version
navig --help

No server? Start here (local mode)

If you don't have a remote server available yet, NAVIG works on localhost too:

# Install
pip install navig

# Discover your local machine as a host
navig host discover-local

# Run your first command (on this machine)
navig run "echo hello from NAVIG && uname -a"

# Explore files
navig file list ~ --tree --depth 2

# Ask the AI operator layer something
navig ask "what process is using the most CPU right now?"

That's a complete first run — no remote server required.


Quick start

# 1. Initialize — creates ~/.navig/, runs setup wizard
navig init

# 2. Add a remote host
navig host add

# 3. Test the connection
navig host test

# 4. Set it as active
navig host use <name>

# 5. Run your first remote command
navig run "uname -a"

# 6. Ask the AI operator layer something about it
navig ask "what is consuming the most memory on this host?"

That's it. Everything else builds from here.

No server yet? examples/quickdemo.sh walks the same path on your own machine in 60 seconds.

Where to go next — after that first navig run:

Command

What it does

navig host add

Add more hosts

navig vault set KEY=value

Store secrets encrypted

navig db query "SELECT 1"

Connect to a remote database

navig tunnel 5432

Open an SSH tunnel to a port

navig flow run deploy.yaml

Run a multi-step workflow

navig ask "..."

Ask the AI operator layer anything


Command reference

The pattern is consistent across all resources:

navig <resource> <action> [options]

Infrastructure

Command

What it does

navig host

Add, switch, test, and inspect remote hosts

navig run

Execute commands on remote or local hosts

navig file

Upload, download, read, and edit remote files

navig db

Query, dump, restore, and maintain databases

navig docker

Container and compose operations

navig web

Web server config, test, and reload

navig tunnel

SSH tunnel management

navig backup

Config and data backup / restore

AI & Automation

Command

What it does

navig ask

AI-assisted troubleshooting and command guidance

navig flow

Multi-step automation workflows

navig mcp

MCP server for AI editor and tool integration

navig gateway

Start and manage chat gateway (Telegram, Matrix)

navig agent

Autonomous agent runtime — install, start, configure, manage

navig telegram

Telegram Manager — login, search, organize, business catcher, emoji rights

navig github

Search / backup / clone GitHub repos (flat by default) — token from the vault

navig tiktok

Download TikTok content + AI briefings (description + top comments)

Organisation

Command

What it does

navig config

View, validate, and manage configuration

navig vault

Encrypted credential storage

navig space

Multi-context operator environments

navig mesh

LAN peer discovery and command delegation

Run navig help or navig help <topic> for detailed usage. Every command also supports --help.


Plugins

First-party plugins extend navig with new commands — and several run on their own, with no navig install at all. Source and per-plugin docs: navig-run/plugins.

Plugin

What it does

Runs on its own

Install

navig-agentctl

Agent Control Center (devops section): sessions, worktrees, tasks and the Agent Monitor (runs, hooks, verified lands)…

— adds navig agentctl

pip install "navig[agentctl]"

navig-ahk

AutoHotkey v2 automation for navig — click, type, open, windows and AI-written scripts, as its own plugin

— a Deck surface

pip install "navig[ahk]"

navig-alexa

Alexa custom skill server — host the official skill that runs NAVIG by voice, with request verification,…

✅ navig-alexa

from source (not on PyPI yet)

navig-alice

A Yandex Dialog (навык Алисы) webhook for NAVIG, plus Yandex Station and smart-home control through api.iot.yandex.net

✅ navig-alice

from source (not on PyPI yet)

navig-antivirus

Browser-extension malware/PUP scanning, Chrome extension-registry auditing, Chrome profile-index recovery, and a…

✅ navig-antivirus

pip install navig-antivirus (with navig: navig[antivirus])

navig-audio

Speak text, transcribe audio, generate music and sound effects, analyse beats and render podcasts — its own…

✅ navig-audio

pip install navig-audio (with navig: navig[voice])

navig-blackbox

A standalone flight-recorder & crash black-box for any Python app: append-only event log, sys.excepthook crash…

✅ navig-blackbox · nbb

pip install navig-blackbox (with navig: navig[blackbox])

navig-bookmarks

A local bookmark manager: import from any browser or HTML export, full-text search, AI folder plans and tags with your…

✅ navig-bookmarks

pip install navig-bookmarks (with navig: navig[bookmarks])

navig-browser

Launch an isolated Chrome/Edge/Brave or Electron app, drive it over CDP, keep named profiles and stop only what it…

✅ navig-browser

pip install navig-browser (with navig: navig[stealth])

navig-cabinet

Your documents in one plugin: an encrypted cabinet for important files (ID and passport scans, medical records,…

✅ navig-cabinet

pip install navig-cabinet (with navig: navig[cabinet])

navig-calendar

List/add/sync events (Google Calendar, CalDAV, ICS)

✅ navig-calendar

pip install navig-calendar

navig-chats

A local library for your AI conversations: import your ChatGPT data export, save chats from the page with the NAVIG…

✅ navig-chats

pip install navig-chats (with navig: navig[chats])

navig-companion

NAVIG's voice companion — speak, brief, think, quiz, music

— adds navig companion

from source (not on PyPI yet)

navig-contacts

navig contacts: the address book and the alias-to-route table dispatch resolves against, in one store

✅ navig-contacts

pip install navig-contacts

navig-debrief

Visual presentation of a work session: a slide deck from transcript facts (navig debrief), plus the full HTML report…

✅ navig-debrief

pip install navig-debrief (with navig: navig[debrief])

navig-dedupe

A free, standalone perceptual duplicate finder for photos, video, audio & any file

✅ navig-dedupe · ndup

pip install navig-dedupe (with navig: navig[dedupe])

navig-devhost

Give any local dev server a real .test domain over trusted HTTPS in one command (hosts + mkcert + raw TLS relay),…

✅ navig-devhost

pip install navig-devhost

navig-devnet

Developer/ops network inspection: DNS/WHOIS/SSL lookups and an SSRF-guarded HTTP repeater — its own navig-devnet…

✅ navig-devnet

pip install navig-devnet (with navig: navig[devnet])

navig-distribution

Distribution for NAVIG OS: project-scoped channel research, eligibility, campaigns, block-level content, identities,…

— adds navig distribution

from source (not on PyPI yet)

navig-download

Universal media downloader (yt-dlp): video, audio & files from YouTube, TikTok and any supported site

✅ navig-download

pip install navig-download (with navig: navig[download])

navig-ebay

Sell on eBay via the official Sell APIs (draft, publish, price, orders) wired into navig ebay

✅ navig-ebay

pip install navig-ebay (with navig: navig[ebay])

navig-email

Gmail mailroom: rules, watch, labels, stats, digests, drafts — its own navig-email command (Gmail app password over…

✅ navig-email

pip install navig-email

navig-explore

A universal local media/data explorer for ANY folder

✅ navig-explore

pip install navig-explore

navig-games

Proactively find & auto-claim FREE games (Epic now; GOG/Amazon/Steam next) and manage your game library

✅ navig-games

pip install navig-games (with navig: navig[games])

navig-generate

Generate images, video and audio with your own provider keys, keep the variants you like, and edit them: cut, fx,…

✅ navig-generate

pip install navig-generate (with navig: navig[generate])

navig-github

The full GitHub toolbox (backup, mirror, export, manage): its own navig-github command, and navig github inside navig

✅ navig-github

pip install navig-github (with navig: navig[github])

navig-glass

NAVIG Glass integration: discover the standalone viewer, open files through NAVIG, keep Glass fully usable without it

— adds navig glass

from source (not on PyPI yet)

navig-google

AI answers grounded in Google Search through the Gemini API: cited sources, one key, billed per request — the…

✅ navig-google

from source (not on PyPI yet)

navig-home

One control plane for the whole home: find every device on the LAN, keep one inventory, read the Livebox DHCP truth,…

✅ navig-home

from source (not on PyPI yet)

navig-lights

Control your lamps: Govee over the LAN API or developer cloud, and anything Home Assistant knows — the clean bridge to…

✅ navig-lights

from source (not on PyPI yet)

navig-matrix

Matrix messaging surface for navig — rooms, invites, tokens, admin and the inbox bridge, as its own plugin

— a Deck surface

pip install "navig[matrix]"

navig-media

The NAVIG media suite in one install: image and video generation, voice and music, writing, and the assembly line that…

✅ navig-media

pip install navig-media

navig-media-core

The shared media engine NAVIG's media packages run on — media types and the generator registry, the generation…

— a shared library

pip install navig-media-core

navig-menu

AI-first menu builder — auto-detects any project's stack and builds a premium interactive terminal menu with layouts,…

✅ navig-menu · nm

npm i -g navig-menu

navig-mini

Lightweight AI agent daemon for Raspberry Pi, NAS boxes, and low-power devices

✅ navig-mini

pip install navig-mini

navig-mobile

Pro-grade Android + iOS device operations: connect, device info, apps, file pull, screenshots, backups, plus forensics…

✅ navig-mobile

pip install navig-mobile (with navig: navig[mobile])

navig-msstore

Microsoft Store publishing verbs for NAVIG, wrapping the msstore-publish block

✅ navig-msstore

pip install navig-msstore

navig-notes

Your web sticky notes on this computer: the NAVIG Dock syncs every note you keep on a page, a site or everywhere, so…

✅ navig-notes

pip install navig-notes (with navig: navig[notes])

navig-obs

Control OBS Studio from navig — scenes, sources, streams, recording, studio mode, whole obs-websocket v5 surface — its…

✅ navig-obs

pip install navig-obs

navig-pentest

The authorized-only offensive-security toolkit: passive recon (RDAP/whois, DNS, crt.sh subdomains, HTTP fingerprint),…

✅ navig-pentest · navig-warroom · warroom-osint

pip install navig-pentest

navig-perplexity

Delegate independent intellectual work — research, articles, marketing copy, naming, comparisons, critique,…

✅ navig-perplexity

from source (not on PyPI yet)

navig-pipeline

The content assembly line: short vertical clips cut to the beat, narrated reels, captions and hooks, and download →…

✅ navig-pipeline · navig-content

pip install navig-pipeline

navig-router

NAVIG Router: one native OpenAI- and Anthropic-compatible LLM endpoint over every provider you already have keys for —…

— adds navig router

from source (not on PyPI yet)

navig-sessions

Read and finish the Claude Code sessions open in VS Code over CDP: one finishing prompt per idle session, working…

✅ navig-sessions

from source (not on PyPI yet)

navig-social

Compose, schedule & publish across social networks (Studio + one-call fan-out)

✅ navig-social

pip install navig-social (with navig: navig[social])

navig-tasks

Navig-tasks: project-scoped tasks, triggers, actions and a Telegram review loop for NAVIG

— adds navig tasks

from source (not on PyPI yet)

navig-telegram

Telegram surface for navig — bot management, sessions, status and the MTProto user-account verbs, as its own plugin

— a Deck surface

pip install "navig[telegram]"

navig-text

AI text generation (drafts/articles/captions/briefs) + navig design (agent HTML/CSS restyle + design tokens) for the…

✅ navig-text

pip install navig-text

navig-tv

Full control of a Fire TV or Android TV over ADB — power, d-pad, media keys, app launch, text entry, volume and…

✅ navig-tv

from source (not on PyPI yet)

navig-vault

A free, standalone, encrypted developer secrets manager (Doppler / 1Password-CLI / Infisical class)

✅ navig-vault · nv

pip install navig-vault

navig-video

Render a channel's video formats (kinetic episodes, bulletins, motion cards) from its workspace of texts, plates and…

✅ navig-video

pip install navig-video (with navig: navig[video])

navig-vm

Local VMware Workstation VMs from verified cloud images, provisioned on first boot with cloud-init and driven from…

✅ navig-vm

pip install navig-vm (with navig: navig[vm])

navig-voice

A local voice stack for NAVIG, mounted as navig assistant: wake word, speech to text, a rules NLU with skills, TTS,…

✅ navig-voice

from source (not on PyPI yet)

navig-youtube-music

Drive the YouTube Music desktop app (Venipa ytmdesktop2) over its authenticated local API and existing CDP endpoint:…

✅ navig-youtube-music

from source (not on PyPI yet)

Agent runtime

NAVIG ships an autonomous agent layer that runs as a persistent background process.

# One-time setup: write ~/.navig/agent/config.yaml and create runtime directories
navig agent install

# Optional: register as an OS service (starts on boot)
navig service install
navig service start

# Check state
navig agent status

Operating modes: supervised (default, confirms actions), autonomous (executes without prompts), observe-only (reads and reports, no writes). Personality profiles: friendly, professional, witty, paranoid, minimal.

See docs/agent/install.md for the full reference.


AI and chat interfaces

NAVIG can expose its operator layer through:

  • CLI (navig ask)

  • Telegram (via navig gateway)

  • Matrix

  • Any MCP-compatible editor (Cursor, Claude Desktop, VS Code)

navig ask "Why does this container keep restarting?"

The AI layer assists with reasoning, context, and workflow execution. It does not replace direct operator control — the operator stays responsible, the operator stays in command.


Cloud routing (relay.navig.run)

NAVIG's hosted Deck lives at relay.navig.run. It's a static React app + a tiny broker (Cloudflare Pages Functions + D1) that maps your daemon's API key (and your Telegram user_id) to its current public URL. Your daemon registers itself with the broker on every boot; the Deck and the Telegram Mini App resolve "where is my daemon" via the broker. Daemon data never leaves your machine — the broker only stores routing metadata (a SHA-256 of your api_key, your current public URL, and the Telegram bindings).

Modes — pick one

Mode

Use when

How to enable

Subscription needed?

Lighthouse (recommended)

You want always-on access (Telegram / SMS / remote Deck) with no tunnel and no domain.

navig lighthouse deploy deploys a tiny edge to your own Cloudflare account (no Node/wrangler); the brain dials out to it over one WebSocket. See docs/LIGHTHOUSE.md.

None — self-hosted on your Cloudflare, free for everyone.

cloudflared / hosted relay

Laptop, home machine, anything behind NAT. No public IP, no domain.

The daemon spawns cloudflared to create a free *.trycloudflare.com quick tunnel. Manual: navig cloud connect.

Free for new Solo users + active subscribers. Lapsed subscribers get a 30-day grace; perpetual-only buyers self-host via Lighthouse/Tailscale instead.

Tailscale Funnel

You want a free, stable, subscription-free public URL for your Mini App.

navig cloud tailscale --enable — bring up a *.ts.net URL via Tailscale Funnel, then navig miniapp register to push it to BotFather.

None — direct mode, broker not involved.

direct (your domain)

VPS with a public domain and a reverse proxy (nginx, Caddy, Traefik).

navig cloud direct https://navig.example.com — daemon skips cloudflared entirely and registers your URL with the broker. Also picks up $NAVIG_PUBLIC_URL from systemd Environment= lines.

None — direct mode, broker not involved.

off

Fully local-only. Don't talk to the broker at all.

navig cloud disconnect (or cloud.enabled: false in ~/.navig/config.yaml).

None.

The subscription-vs-perpetual split: the hosted cloud relay is the one feature that costs us money per month. So it's a subscription feature. Perpetual-pack buyers get the full local app forever and self-host the Mini App with a single Tailscale command — free, stable, costs us nothing. See docs/CLOUD.md for the full topology.

Always-on in 3 commands (your own edge + your own Deck)

NAVIG self-hosts entirely on your Cloudflare account — two tiny deployments, each with its own stable URL, plus your brain dialing out:

navig lighthouse login     # 1. EDGE: API uplink (Worker + Durable Object). Opens
                           #    Cloudflare → click Authorize → deploys + sets the
                           #    Telegram webhook. (Or: navig lighthouse deploy --token <t>)
navig miniapp deploy       # 2. DECK: builds the UI (static export) → your own
                           #    Cloudflare Pages, bakes the edge URL in (auto-targets
                           #    your brain) → sets the bot's Mini App button.
navig gateway start        # 3. BRAIN: your daemon dials OUT to the edge. Nothing inbound.

Open your bot → tap the menu button → your Deck, talking to your brain through your edge — reachable from anywhere, no tunnel, no port-forwarding, no domain. navig lighthouse url prints every inbound hook (Telegram is set automatically; paste the SMS hook into Twilio only if you use SMS; social publishers are outbound — token only, no webhook).

One Cloudflare credential for both deploys, no wrangler: both lighthouse deploy/login and miniapp deploy upload via the Cloudflare REST API and reuse the same credential (an API token with the "Edit Cloudflare Workers" template, or the OAuth token from lighthouse login). Node 18+ is only needed to build the Deck (miniapp deploy); the upload — like the edge — needs neither Node nor wrangler. (miniapp deploy --wrangler is a Cloudflare-Pages fallback if you prefer it.)

Ports & firewall (cheat sheet)

Mode

Inbound

Outbound

Daemon bind

cloudflared

none

443 → *.cloudflare.com (cloudflared opens an outbound WebSocket)

127.0.0.1:8765 (loopback only)

direct

443 → your VPS (terminated by nginx/Caddy)

443 → relay.navig.run (heartbeat every 60s)

127.0.0.1:8765 (your proxy forwards from 443 → here)

off

none

none

127.0.0.1:8765 (machine-local)

The daemon itself never binds to a public interface — your reverse proxy is what listens on 0.0.0.0:443 in direct mode. Defense in depth: even if you misconfigure the proxy, the daemon socket stays on loopback.

Quick commands

navig lighthouse login        # recommended: your own Cloudflare edge (browser auth)
navig lighthouse url          # show every inbound hook + the one stable edge URL
navig miniapp deploy          # deploy your own Deck UI → bot's Mini App button
navig cloud connect           # turn cloudflared mode on (default)
navig cloud direct https://navig.example.com   # switch to VPS direct mode
navig cloud direct --clear    # revert direct mode back to cloudflared
navig cloud status            # show mode, public URL, last heartbeat
navig cloud disconnect        # full off (no broker, no tunnel)
navig cloud key --reveal      # print the api_key (sensitive)

For the full operator guide — including ready-made nginx/Caddy configs, a systemd unit template with Environment=NAVIG_PUBLIC_URL=..., the security model, and troubleshooting — see docs/CLOUD.md.


Configuration

Global config lives in ~/.navig/. Override with NAVIG_CONFIG_DIR.

~/.navig/
├── config.yaml       ← main config
├── vault/            ← encrypted credentials
├── sessions/
├── workspace/
│   ├── SOUL.md       ← persistent operator identity
│   └── HEARTBEAT.md
└── logs/

Project-specific overrides: place a .navig/ directory at your repository root. Project config takes precedence over global config.

See docs/user/CONFIG_SCHEMA.md and docs/user/HANDBOOK.md.


Documentation

Guide

Installation

docs/user/INSTALLATION.md

Quick reference

docs/user/QUICK_REFERENCE.md

CLI commands

docs/user/CLI_COMMANDS.md

Handbook

docs/user/HANDBOOK.md

Troubleshooting

docs/user/troubleshooting.md

Telegram setup

docs/features/TELEGRAM.md

Agent runtime (agent install)

docs/agent/install.md

Production deployment

docs/dev/PRODUCTION_DEPLOYMENT.md

Migration guide

docs/dev/MIGRATION_GUIDE.md

Plugin / pack development

navig-registry


Development

# Lint
ruff check navig tests
ruff format --check navig tests

# Test
pytest

# Build
python -m build

Quick checks before a PR:

python -c "import navig"             # no import errors
navig --help                         # CLI loads in < 1s
pytest tests/ -q                     # all green

See CONTRIBUTING.md for the full contribution workflow, branch model, and commit conventions.


Community & support

Channel

Bug reports & feature requests

GitHub Issues

Ideas & discussion

GitHub Discussions

Announcements

t.me/navigrun

Community group

t.me/+OyFMwN66c3M0NTk0

Security reports

SECURITY.md


Project structure

navig/
├── navig/               # Main Python package
│   ├── cli/             # CLI app, commands registry, help system
│   ├── commands/        # CLI command modules (one file per resource)
│   ├── agents/          # Specialist agents (inbox router, etc.)
│   ├── memory/          # Conversation store, knowledge base, RAG, embeddings
│   ├── providers/       # AI provider clients, fallback manager, OAuth
│   ├── gateway/         # Chat gateway (Telegram, Matrix) integrations
│   ├── onboarding/      # First-run setup engine and wizard steps
│   ├── daemon/          # Background service entry point
│   ├── core/            # Config loader, migrations, crash handler
│   └── resources/       # Default prompts, personas, assets
├── sdk/                 # Pointer to the SDK in navig-run/registry
├── scripts/             # Install and deployment scripts
├── deploy/              # Docker, systemd, hardening configs
├── docs/                # Documentation
├── packages/            # Optional add-on packages
└── tests/               # pytest test suite

Sponsor

NAVIG is built by one person and released as open-source. If it saves you time, prevents mistakes, or earns a place in your workflow:

Tier

📡 Watcher

$5/mo

Simple backing. Badge + optional name in supporters.

⚡ Node Operator

$10/mo

You run this in real workflows. Early betas + dev updates.

🏗️ System Architect

$25/mo

Long-term support. Roadmap input + private changelogs.

⚡ Signal Boost

$10 one-time

Small direct contribution.

🚀 Feature Sprint

$50 one-time

Funds a focused development push.

🌐 Founding Node

$100 one-time

Permanent credit in FOUNDERS.md. Limited.

See FUNDING.md for full details.


Security

Report vulnerabilities privately. See SECURITY.md.


License

Apache-2.0 — see LICENSE.

Brand usage and official build identity: TRADEMARK.md · GOVERNANCE.md


Available Tools

15 tools

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 141 tool updatesv0.1.3
    • Removedcdp_click
    • Removedcdp_detach
    • Removedcdp_eval
    • Removedcdp_inject
    • Removedcdp_key
    • Removedcdp_launch
    • Removedcdp_launched
    • Removedcdp_login
    • Removedcdp_move
    • Removedcdp_navigate
    • Removedcdp_new
    • Removedcdp_screenshot
    • Removedcdp_scroll
    • Removedcdp_snapshot
    • Removedcdp_stop
    • Removedcdp_switch
    • Removedcdp_tabs
    • Removedcdp_targets
    • Removedcdp_type
    • Removedconnector_cyberaigen_search
    • Removedconnector_gcp_translate_act
    • Removedconnector_github_act
    • Removedconnector_github_fetch
    • Removedconnector_github_search
    • Removedconnector_gmail_act
    • Removedconnector_gmail_fetch
    • Removedconnector_gmail_search
    • Removedconnector_google_calendar_act
    • Removedconnector_google_calendar_fetch
    • Removedconnector_google_calendar_search
    • Removedconnector_google_drive_fetch
    • Removedconnector_google_drive_search
    • Removedconnector_google_maps_fetch
    • Removedconnector_google_maps_search
    • Removedconnector_health
    • Removedconnector_linear_act
    • Removedconnector_linear_fetch
    • Removedconnector_linear_search
    • Removedconnector_list
    • Removedconnector_notion_act
    • Removedconnector_notion_fetch
    • Removedconnector_notion_search
    • Removedconnector_perplexity_search
    • Removedconnector_slack_act
    • Removedconnector_slack_fetch
    • Removedconnector_slack_search
    • Removedconnector_supabase_act
    • Removedconnector_supabase_fetch
    • Removedconnector_youtube_fetch
    • Removedconnector_youtube_search
    • Removeddesktop_filesystem
    • Removeddock_act
    • Removeddock_console
    • Removeddock_network
    • Removeddock_open
    • Removeddock_release
    • Removeddock_screenshot
    • Removeddock_snapshot
    • Removeddock_status
    • Removeddock_tabs
    • Removeddock_text
    • Removedfirecrawl_crawl
    • Removedfirecrawl_scrape
    • Removedfirecrawl_search
    • Removedmemory_key_facts_forget
    • Removedmemory_key_facts_remember
    • Removedmemory_key_facts_retrieve
    • Removedmemory_key_facts_stats
    • Removedmemory_key_facts_update
    • Removednavig_agent_component_restart
    • Removednavig_agent_goal_add
    • Removednavig_agent_goal_cancel
    • Removednavig_agent_goal_list
    • Removednavig_agent_goal_start
    • Removednavig_agent_learning_run
    • Removednavig_agent_remediation_list
    • Removednavig_agent_remediation_retry
    • Removednavig_agent_service_install
    • Removednavig_agent_service_status
    • Removednavig_agent_service_uninstall
    • Removednavig_agent_status_get
    • Removednavig_app_info
    • Addednavig_automation
    • Addednavig_automation_apply
    • Removednavig_bay_acquire
    • Removednavig_bay_list
    • Removednavig_block_apply
    • Removednavig_block_list
    • Removednavig_block_show
    • Addednavig_browser_debug
    • Addednavig_browser_debug_act
    • Addednavig_browser_user
    • Addednavig_connectors
    • Addednavig_connectors_act
    • Addednavig_fleet
    • Removednavig_get_context
    • Removednavig_host_info
    • Addednavig_knowledge
    • Removednavig_list_apps
    • Removednavig_list_databases
    • Removednavig_list_hosts
    • Removednavig_list_wiki_pages
    • Addednavig_memory
    • Addednavig_memory_update
    • Removednavig_read_wiki_page
    • Addednavig_recall
    • Removednavig_run_command
    • Addednavig_runtime
    • Addednavig_runtime_action
    • Removednavig_runtime_create_mission
    • Removednavig_runtime_list_missions
    • Removednavig_runtime_list_nodes
    • Removednavig_runtime_list_receipts
    • Removednavig_runtime_mission_action
    • Removednavig_runtime_trust_score
    • Removednavig_search_docs
    • Removednavig_search_wiki
    • Removednavig_space_context
    • Removednavig_space_current
    • Removednavig_space_read
    • Removednavig_space_related
    • Addednavig_web
    • Removednavig_web_fetch
    • Removednavig_web_search
    • Removedperplexity_ask
    • Removedperplexity_model
    • Removedperplexity_models
    • Removedperplexity_status
    • Removedperplexity_threads
    • Removedperplexity_write
    • Removedrecall_ask
    • Removedrecall_decisions
    • Removedrecall_forgotten_ideas
    • Removedrecall_get
    • Removedrecall_ingest
    • Removedrecall_open_questions
    • Removedrecall_related
    • Removedrecall_search
    • Removedrecall_source_excerpt
    • Removedrecall_tables
    • Removedrecall_timeline
  2. 76 tool updatesv0.1.2
    • Changedconnector_cyberaigen_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_gcp_translate_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_github_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_github_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_github_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_gmail_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_gmail_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_gmail_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_google_calendar_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_google_calendar_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_google_calendar_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_google_drive_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_google_drive_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_google_maps_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_google_maps_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_linear_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_linear_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_linear_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_notion_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_notion_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_notion_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_perplexity_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_slack_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_slack_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_slack_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Changedconnector_supabase_act5 fields changed
      • changedInput schema / properties / action_type / description
        Previous value: -"Action to perform. Allowed values: reply, create, update, delete, archive, label, send, move"New value: +"Write to perform. The provider must support it — a value outside its supported set is refused with success: false, not silently applied."
      • addedInput schema / properties / action_type / enum
        Added value: +[
        +  "reply",
        +  "create",
        +  "update",
        +  "delete",
        +  "archive",
        +  "label",
        +  "send",
        +  "move"
        +]
      • changedInput schema / properties / params / description
        Previous value: -"Action-specific parameters (e.g. body, subject, labels)"New value: +"Action-specific payload, e.g. {to, subject, body} for send, {body} for reply, {add_labels, remove_labels} for label"
      • changedInput schema / properties / resource_id / description
        Previous value: -"ID of the resource to act on (if applicable)"New value: +"Native id of the item to change, when the action targets an existing item (reply, update, delete, archive, label, move). Omit it for create/send."
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_supabase_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_youtube_fetch2 fields changed
      • changedInput schema / properties / resource_id / description
        Previous value: -"Native resource ID to fetch"New value: +"Native id of the item, exactly as returned by the matching connector_<id>_search result"
      • addedInput schema / properties / resource_id / minLength
        Added value: +1
    • Changedconnector_youtube_search4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return (1-50)"
      • addedInput schema / properties / limit / maximum
        Added value: +50
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language search query"New value: +"Natural-language query, e.g. 'invoices from Acme last month'"
    • Removeddesktop_ahk
    • Removeddesktop_app
    • Removeddesktop_click
    • Removeddesktop_find
    • Removeddesktop_move
    • Removeddesktop_multi_edit
    • Removeddesktop_multi_select
    • Removeddesktop_screenshot
    • Removeddesktop_scroll
    • Removeddesktop_set_value
    • Removeddesktop_shortcut
    • Removeddesktop_snapshot
    • Removeddesktop_tree
    • Removeddesktop_type
    • Addeddock_act
    • Addeddock_console
    • Addeddock_network
    • Addeddock_open
    • Addeddock_release
    • Addeddock_screenshot
    • Addeddock_snapshot
    • Addeddock_status
    • Addeddock_tabs
    • Addeddock_text
    • Changedmemory_key_facts_retrieve1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedmemory_key_facts_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changednavig_agent_service_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changednavig_agent_status_get1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changednavig_app_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changednavig_get_context1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changednavig_host_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changednavig_list_apps1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changednavig_list_databases1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changednavig_list_hosts1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changednavig_list_wiki_pages1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changednavig_search_docs1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changednavig_search_wiki1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "items": {
        +      "description": "The rows this tool returned",
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Addednavig_space_context
    • Addednavig_space_current
    • Addednavig_space_read
    • Addednavig_space_related
    • Addedperplexity_ask
    • Addedperplexity_model
    • Addedperplexity_models
    • Addedperplexity_status
    • Addedperplexity_threads
    • Addedperplexity_write
  3. 120 tool updates
    • First observedcdp_click
    • First observedcdp_detach
    • First observedcdp_eval
    • First observedcdp_inject
    • First observedcdp_key
    • First observedcdp_launch
    • First observedcdp_launched
    • First observedcdp_login
    • First observedcdp_move
    • First observedcdp_navigate
    • First observedcdp_new
    • First observedcdp_screenshot
    • First observedcdp_scroll
    • First observedcdp_snapshot
    • First observedcdp_stop
    • First observedcdp_switch
    • First observedcdp_tabs
    • First observedcdp_targets
    • First observedcdp_type
    • First observedconnector_cyberaigen_search
    • First observedconnector_gcp_translate_act
    • First observedconnector_github_act
    • First observedconnector_github_fetch
    • First observedconnector_github_search
    • First observedconnector_gmail_act
    • First observedconnector_gmail_fetch
    • First observedconnector_gmail_search
    • First observedconnector_google_calendar_act
    • First observedconnector_google_calendar_fetch
    • First observedconnector_google_calendar_search
    • First observedconnector_google_drive_fetch
    • First observedconnector_google_drive_search
    • First observedconnector_google_maps_fetch
    • First observedconnector_google_maps_search
    • First observedconnector_health
    • First observedconnector_linear_act
    • First observedconnector_linear_fetch
    • First observedconnector_linear_search
    • First observedconnector_list
    • First observedconnector_notion_act
    • First observedconnector_notion_fetch
    • First observedconnector_notion_search
    • First observedconnector_perplexity_search
    • First observedconnector_slack_act
    • First observedconnector_slack_fetch
    • First observedconnector_slack_search
    • First observedconnector_supabase_act
    • First observedconnector_supabase_fetch
    • First observedconnector_youtube_fetch
    • First observedconnector_youtube_search
    • First observeddesktop_ahk
    • First observeddesktop_app
    • First observeddesktop_click
    • First observeddesktop_filesystem
    • First observeddesktop_find
    • First observeddesktop_move
    • First observeddesktop_multi_edit
    • First observeddesktop_multi_select
    • First observeddesktop_screenshot
    • First observeddesktop_scroll
    • First observeddesktop_set_value
    • First observeddesktop_shortcut
    • First observeddesktop_snapshot
    • First observeddesktop_tree
    • First observeddesktop_type
    • First observedfirecrawl_crawl
    • First observedfirecrawl_scrape
    • First observedfirecrawl_search
    • First observedmemory_key_facts_forget
    • First observedmemory_key_facts_remember
    • First observedmemory_key_facts_retrieve
    • First observedmemory_key_facts_stats
    • First observedmemory_key_facts_update
    • First observednavig_agent_component_restart
    • First observednavig_agent_goal_add
    • First observednavig_agent_goal_cancel
    • First observednavig_agent_goal_list
    • First observednavig_agent_goal_start
    • First observednavig_agent_learning_run
    • First observednavig_agent_remediation_list
    • First observednavig_agent_remediation_retry
    • First observednavig_agent_service_install
    • First observednavig_agent_service_status
    • First observednavig_agent_service_uninstall
    • First observednavig_agent_status_get
    • First observednavig_app_info
    • First observednavig_bay_acquire
    • First observednavig_bay_list
    • First observednavig_block_apply
    • First observednavig_block_list
    • First observednavig_block_show
    • First observednavig_get_context
    • First observednavig_host_info
    • First observednavig_list_apps
    • First observednavig_list_databases
    • First observednavig_list_hosts
    • First observednavig_list_wiki_pages
    • First observednavig_read_wiki_page
    • First observednavig_run_command
    • First observednavig_runtime_create_mission
    • First observednavig_runtime_list_missions
    • First observednavig_runtime_list_nodes
    • First observednavig_runtime_list_receipts
    • First observednavig_runtime_mission_action
    • First observednavig_runtime_trust_score
    • First observednavig_search_docs
    • First observednavig_search_wiki
    • First observednavig_web_fetch
    • First observednavig_web_search
    • First observedrecall_ask
    • First observedrecall_decisions
    • First observedrecall_forgotten_ideas
    • First observedrecall_get
    • First observedrecall_ingest
    • First observedrecall_open_questions
    • First observedrecall_related
    • First observedrecall_search
    • First observedrecall_source_excerpt
    • First observedrecall_tables
    • First observedrecall_timeline

TDQS

A4.2/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct domain+action, and descriptions explicitly cross-reference neighbors to prevent confusion (e.g. navig_memory vs navig_recall vs navig_knowledge, navig_browser_debug vs navig_browser_user vs navig_web). The read/act pairing (debug vs debug_act, connectors vs connectors_act, runtime vs runtime_action) is clearly delineated. Boundaries are stated rather than left implicit.

Naming Consistency4/5

Reads follow a uniform navig_<domain> pattern (navig_fleet, navig_knowledge, navig_recall, navig_web). Writes deviate slightly in verb suffix: navig_connectors_act and navig_browser_debug_act use '_act', navig_runtime_action uses '_action', while navig_memory_update and navig_automation_apply use other verbs. Mostly consistent with minor deviations.

Tool Count5/5

15 tools sit at the top of the well-scoped range, and each earns its place: nine distinct read domains plus their corresponding state-changing counterparts. The read/act split is principled rather than redundant. No filler tools.

Completeness4/5

Strong lifecycle coverage: memory (read/update), runtime (read/action), automation (browse/apply), connectors (read/act), browser (inspect/act). Minor gaps remain—knowledge, recall, fleet and web are read-only with no write path, and memory lacks an explicit hard-delete. These are largely by design and workable.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    DEPRECATED — succeeded by SSH-Connect (Rust rewrite): https://github.com/mixelpixx/SSH-Connect
    11
    50
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Local MCP server that lets your AI coding agent query its own cross-tool project history - file/command freshness, past test failures, cost & token spend, cache status, and session handoff - over stdio, 100% local, no telemetry.
    51
    -