Skip to main content

Thin CLI client for Zylch AI - connects to Zylch API server

Project description

Zylch CLI

Thin CLI client for Zylch AI - your AI assistant for email, calendar, and relationship intelligence.

Architecture

The CLI is a thin client that communicates with the Zylch API server. All business logic, AI processing, and data storage happens on the server. The CLI handles:

  • User authentication (Firebase OAuth via browser)
  • Service connections (Google, Microsoft, Anthropic)
  • Interactive chat with slash command support
  • Local caching for offline access
  • Modifier queue for offline operations
┌─────────────┐         HTTP API          ┌──────────────┐
│  Zylch CLI  │ ───────────────────────► │ Zylch Server │
│  (Thin)     │ ◄─────────────────────── │   (FastAPI)  │
└─────────────┘                           └──────────────┘
      │                                          │
      ▼                                          ▼
 Local Cache                               Supabase
 (SQLite)                                  (PostgreSQL)

Installation

pip install zylch-cli

From source

git clone https://github.com/malemi/zylch-cli.git
cd zylch-cli
pip install -e .

Quick Start

# Start the CLI (connects to production server by default)
zylch

# Or connect to a specific server
zylch --server-url http://localhost:9000

Configuration

Configuration is stored in ~/.zylch/cli_config.json:

{
  "api_server_url": "https://api.zylchai.com",
  "session_token": "",
  "owner_id": "",
  "email": "",
  "local_db_path": "~/.zylch/local_data.db",
  "enable_offline": true,
  "max_offline_days": 7,
  "auto_sync_on_start": false
}

Commands

Session & Authentication (Client-side)

Command Description
/login Login via browser (Firebase OAuth)
/logout Logout and clear session
/status Show CLI status and cache stats
/new Start new conversation
/quit, /exit Exit Zylch

Integrations (Client-side)

Command Description
/connect Show all service connection status
/connect anthropic Set your Anthropic API key (required for chat)
/connect google Connect Google (Gmail, Calendar) via OAuth
/connect microsoft Connect Microsoft (Outlook, Calendar)
/connect --reset Disconnect all services

Data & Sync (Server-side)

Command Description
/sync [days] Sync emails & calendar from connected services
/gaps Show relationship gaps analysis
/briefing Get daily briefing
/archive Email archive management (--help for details)
/cache Cache management (--help for details)

AI & Memory (Server-side)

Command Description
/memory Behavioral memory management (--help for details)
/model [haiku|sonnet|opus|auto] Switch AI model tier
/trigger Event automation (--help for details)

Sharing (Server-side)

Command Description
/share <email> Share data with another user
/revoke <email> Revoke sharing access
/sharing Show current sharing status

Other (Server-side)

Command Description
/mrcall Link to MrCall assistant
/tutorial Interactive tutorial
/help Show all commands

Authentication Flow

  1. User runs /login
  2. CLI starts local HTTP server on localhost:8765
  3. Browser opens to {server}/api/auth/oauth/initiate
  4. User completes Firebase/Google OAuth in browser
  5. Server redirects to localhost:8765/callback?token=...
  6. CLI captures JWT token, saves to config
  7. Token used for all subsequent API calls

Token Expiry: Firebase JWT tokens expire after ~1 hour. The CLI checks token expiry locally before making requests. If expired, user is prompted to /login again.

Service Connection Flow (Google/Microsoft)

  1. User runs /connect google
  2. CLI calls /api/auth/google/authorize to get OAuth URL
  3. Browser opens to Google consent screen
  4. User authorizes Gmail/Calendar access
  5. Callback stores tokens in Supabase (server-side)
  6. CLI receives success confirmation

Important: OAuth tokens are stored in Supabase, not locally. This allows the same credentials to work across CLI and web dashboard.

Offline Support

The CLI includes offline capabilities:

  • Local Cache: SQLite database at ~/.zylch/local_data.db

    • Cached emails, calendar events, contacts
    • 7-day TTL for cached data
  • Modifier Queue: Operations queued when offline

    • Email drafts, sends
    • Calendar event creation
    • Synced when connection restored via POST /api/data/modifier

Project Structure

zylch-cli/
├── zylch_cli/
│   ├── __init__.py
│   ├── cli.py           # Main CLI (Click + Rich + prompt_toolkit)
│   ├── api_client.py    # HTTP client for Zylch API
│   ├── config.py        # Configuration + JWT parsing
│   ├── oauth_handler.py # Browser OAuth flow
│   ├── local_storage.py # SQLite cache
│   └── modifier_queue.py # Offline operation queue
├── pyproject.toml       # Poetry configuration
└── README.md

Key Files

File Purpose
cli.py Main entry point, slash commands, chat loop with autocomplete
api_client.py All HTTP calls to api.zylchai.com
config.py Load/save config, JWT expiry parsing
oauth_handler.py Local callback server for OAuth
local_storage.py SQLite caching for offline access
modifier_queue.py Queue offline operations for later sync

API Endpoints Used

Authentication

  • POST /api/auth/login - Login with Firebase token
  • POST /api/auth/logout - Invalidate session
  • GET /api/auth/session - Get session info
  • POST /api/auth/refresh - Refresh token (exists but not auto-used)

Service Connections

  • GET /api/auth/google/status - Check Google connection
  • GET /api/auth/google/authorize - Get Google OAuth URL
  • POST /api/auth/google/revoke - Disconnect Google
  • GET /api/auth/anthropic/status - Check Anthropic key
  • POST /api/auth/anthropic/key - Save Anthropic API key
  • POST /api/auth/anthropic/revoke - Delete Anthropic key

Chat

  • POST /api/chat/message - Send message (includes slash commands)
  • GET /api/chat/history - Get conversation history

Data

  • GET /api/data/emails - List email threads
  • GET /api/data/calendar - List calendar events
  • GET /api/data/contacts - List contacts
  • POST /api/data/modifier - Apply offline modifications

Health

  • GET /health - Server health check

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run CLI
zylch

# Run tests
pytest

# Format code
black zylch_cli/
ruff check zylch_cli/

Production URLs

Service URL
API Server https://api.zylchai.com
Web Dashboard https://app.zylchai.com
Website https://zylchai.com

Known Gaps

  1. Token Refresh: The refresh_token() method exists but isn't called automatically. Users must manually /login when token expires.

  2. Microsoft Support: Endpoints exist but not fully implemented yet.

  3. Keychain Storage: Tokens stored in plaintext JSON. TODO: Use system keychain.

What This CLI Does NOT Do

  • Access Google/Microsoft APIs directly (server handles this)
  • Store OAuth credentials locally (only session token)
  • Process emails/calendar locally (server-side)
  • Run AI models (server uses your Anthropic key)

All business logic lives on the server (api.zylchai.com).

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

zylch_cli-0.9.2.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

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

zylch_cli-0.9.2-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

File details

Details for the file zylch_cli-0.9.2.tar.gz.

File metadata

  • Download URL: zylch_cli-0.9.2.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zylch_cli-0.9.2.tar.gz
Algorithm Hash digest
SHA256 1502b6a9d1d0452bcb19df39590867e2f460f081c826782c579bcfbff161de09
MD5 ee1733c24e3d128f77c7452906bb5b4f
BLAKE2b-256 d463af608efa1ca1cf0550e6e7914488b4ce61c881046535b5f1dc35d3c75583

See more details on using hashes here.

Provenance

The following attestation bundles were made for zylch_cli-0.9.2.tar.gz:

Publisher: workflow.yml on malemi/zylch-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zylch_cli-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: zylch_cli-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 33.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zylch_cli-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0518f59e22c29c585434bae126f6829410f379c07cfc78a286f586459057bde4
MD5 5418ad4bcfd4c7a31e8c11aa7e4ef5c9
BLAKE2b-256 495617d4b3273156abc850db4db559eee847c99d4477e463e5acb1f2bc516625

See more details on using hashes here.

Provenance

The following attestation bundles were made for zylch_cli-0.9.2-py3-none-any.whl:

Publisher: workflow.yml on malemi/zylch-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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