Skip to main content

A CLI Collaborative Knowledge Base Management System

Project description

Santai CLI

A CLI for managing Santai knowledge-base projects — with a terminal UI, web dashboard, and AI chat.

Prerequisites

  • Python 3.12+
  • uv
  • Git
  • prek (optional, for pre-commit hooks)

Installation

git clone https://github.com/santai-inc/santai-cli.git
cd santai-cli

# Global install (recommended)
uv tool install --from . santai-cli

# Or development install
uv sync
uv run santai --help

Picking up local changes

uv tool install copies the package into an isolated venv, so edits or branch switches in your clone won't affect the global santai until you reinstall. For active development, use an editable install so the global santai tracks your working tree:

uv tool install --editable --from . santai-cli --force

Otherwise, re-run the install after each change:

uv tool install --from . santai-cli --force

The --force flag is required — without it, uv treats an already-installed package as a no-op.

To track a different branch in a separate directory, use a git worktree and point the editable install at that path:

git worktree add ../santai-cli-other other-branch
uv tool install --editable --from ../santai-cli-other santai-cli --force

Quick Start

santai init my-project
cd my-project
santai ui

Commands

santai init [NAME]

Initialize a new Santai project with the standard directory structure, git repo, and pre-commit hooks.

santai init my-project
santai init .

santai copy SOURCE DESTINATION

Copy an entire project to a new location with a fresh git history.

santai copy . ../forked-kb

santai cherry-pick SOURCE DESTINATION FILES...

Selectively copy specific files or folders from one project into another.

santai cherry-pick ./kb-large ./kb-small notes/idea.md
santai cherry-pick ./research ./writing wiki/ resources/outline.md
santai cherry-pick . ../other-kb notes/ --dry-run
Option Description
--overwrite Overwrite existing files without prompting
--skip Silently skip files that already exist
--dry-run Preview what would be copied

santai merge SOURCE1 SOURCE2 DESTINATION

Merge two projects into a new combined project. The primary project's files take precedence on conflicts.

santai merge ./primary-kb ./secondary-kb ./combined-kb

santai chat

Interactive AI chat session. Requires an API key in .env (see .env.example).

santai chat
santai chat --agent research
santai chat --model claude-sonnet-4-20250514

santai ui

Launch the terminal UI dashboard.

santai ui
santai ui --theme catppuccin

santai web

Launch the web dashboard in your browser.

santai web
santai web --port 3000

santai push / santai pull

Sync projects with Santai Hub (requires santai login).

santai push                  # Upload current project
santai pull my-project       # Download a project

santai login / santai logout / santai whoami

Authenticate with Santai Hub.

santai login                 # Browser-based auth flow
santai whoami                # Show current user
santai logout                # Clear credentials

For detailed usage, options, and examples for all commands, see the full documentation.

Project Structure

A Santai project contains these directories:

Directory Purpose
resources/ Reference materials (markdown, PDFs, images, documents)
codebases/ Code repositories and references
history/ Dated markdown entries documenting major changes
notes/ General notes and scratch space
wiki/ Context for grounding AI agents

Development

uv sync --group dev
uv run santai --help
ruff format .
ruff check --fix .

# Serve documentation locally
uv run mkdocs serve

Source Layout

src/santai_cli/
├── cli.py               # Typer app, command registration
├── commands/
│   ├── init.py          # santai init
│   ├── copy.py          # santai copy
│   ├── cherry_pick.py   # santai cherry-pick
│   ├── merge.py         # santai merge
│   ├── chat.py          # santai chat
│   ├── auth.py          # santai login/logout/whoami
│   ├── push.py          # santai push
│   ├── pull.py          # santai pull
│   ├── ui.py            # santai ui
│   └── web.py           # santai web
├── core/
│   ├── project.py       # Project detection, data models, file graph
│   ├── config.py        # Environment/config loading, API key validation
│   └── chat.py          # Chat engine (streaming, provider abstraction)
├── tui/
│   └── app.py           # Textual TUI application
└── web/
    ├── app.py           # FastAPI web application
    └── templates/
        └── index.html   # Web dashboard (Jinja2 + D3.js)

License

See the repository for license information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

santai_cli-0.1.1.tar.gz (157.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

santai_cli-0.1.1-py3-none-any.whl (172.4 kB view details)

Uploaded Python 3

File details

Details for the file santai_cli-0.1.1.tar.gz.

File metadata

  • Download URL: santai_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 157.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for santai_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3f11cadb4a2489016c44af4f4179f1ce759fb23bc9e02fa213e9724950d6644b
MD5 25bac5f08b65df7c7357a3480449b611
BLAKE2b-256 f3f7d23705c4493fb10f34adaf628c3b37321896439e69657f117e984c0e47b3

See more details on using hashes here.

File details

Details for the file santai_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: santai_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 172.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.25 {"installer":{"name":"uv","version":"0.9.25","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for santai_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9f1bd40ff261507e0b645b50c647d72703b7b871283a6590ce180c4a0c9f4a2b
MD5 9e4b72758bf2e158232f0e35622d1389
BLAKE2b-256 f8057dd6b387367671029cdd3290a67510e517c7466ca508511da851ec84239d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page