Clai (Conversational language Artificial Inteligence) version: TALOS is a free, self-hosted AI assistant focused on practical automation through Telegram and a local web dashboard.
It is intentionally a single-process Python system: easy to run, easy to debug, and easy to modify.
If you are searching for an easier OpenClaw alternative, a free Claude Cowork alternative for personal use, or a simple AI assistant that does not require platform-level setup, Clai TALOS is built for that use case.
Download or clone this repository, then open a terminal in the project folder:
cd Clai_TALOSRun one script:
Linux/macOS:
./start.shWindows:
start.batWindows status: Supported for local runtime and EXE preview builds. Linux/macOS remain the most-tested platforms.
Open the dashboard:
Go to http://localhost:8080 and complete signup + onboarding.
For users who want the fastest install from a GitHub Release asset.
Linux/Ubuntu (.deb):
# Run in the folder where you downloaded the .deb
sudo apt install ./clai-talos_<version>_amd64.deb
sudo systemctl enable --now clai-talos
sudo systemctl status clai-talos --no-pagerIf install fails with unmet dependencies like python3-venv or python3-pip not installable:
sudo add-apt-repository -y universe
sudo apt update
sudo apt install ./clai-talos_<version>_amd64.debmacOS (.pkg):
# Run in the folder where you downloaded the .pkg
sudo installer -pkg ./clai-talos_<version>.pkg -target /
# Start and check background service
sudo launchctl kickstart -k system/com.claitalos.service
sudo launchctl print system/com.claitalos.service
# Optional: stop service
sudo launchctl bootout system /Library/LaunchDaemons/com.claitalos.service.plist
# Optional: tail logs
tail -f /usr/local/var/clai-talos/logs/stderr.logmacOS (.app / .dmg):
# If you downloaded the .app directly:
open "./Clai TALOS.app"
# If you downloaded the .dmg:
hdiutil attach ./clai-talos_<version>.dmg
cp -R "/Volumes/Clai TALOS <version>/Clai TALOS.app" /Applications/
hdiutil detach "/Volumes/Clai TALOS <version>"
open "/Applications/Clai TALOS.app"
# Optional: logs for the app bundle runtime
tail -f ~/.clai-talos/logs/stderr.logOpen the dashboard at http://localhost:8080.
Use either local build mode (for development) or image mode (no source build).
Local build mode (from repository root):
# Build and start
docker compose up -d --build
# View logs
docker compose logs -f talos
# Stop
docker compose downImage mode (pull from GitHub Container Registry) aka Docker compose:
services:
clai-talos:
image: ghcr.io/vynavinv/clai-talos:sha-5532fd6
container_name: clai-talos
restart: unless-stopped
ports:
- "3000:8080"Open the dashboard at http://localhost:8080.
Notes:
- Runtime data is persisted in the Docker volume
talos-data. - The container sets
TALOS_DATA_DIR=/data. - If port
8080is occupied, setWEB_PORTbefore launch:
WEB_PORT=8090 docker compose up -d --buildIn image mode, use:
WEB_PORT=8090 docker compose -f docker-compose.release.yml up -dIf docker: command not found appears:
- On Windows: install Docker Desktop and enable WSL integration.
- On Linux: install Docker Engine + Compose plugin, then restart the terminal.
For servers or remote machines without a browser:
./start.sh --headlessWindows also supports headless mode:
start.bat --headlessWhen no config exists, headless mode offers:
- Tailscale + browser path - Connect Tailscale, start Funnel, and finish onboarding from any device.
- Terminal-only path - Configure Telegram, model provider, API keys, and optional services directly in terminal.
If you have an older copied TALOS folder that predates OTA support, use the legacy updater:
python scripts/update_legacy_copy.py --target /path/to/old/Clai_TALOS --channel stableWindows example:
python scripts/update_legacy_copy.py --target "C:\path\to\old\Clai_TALOS" --channel stableOne-command curl updater (Linux/macOS/Git Bash):
curl -fsSL https://raw.githubusercontent.com/VynavinV/Clai_TALOS/master/scripts/update_via_curl.sh | bash -s -- --target /path/to/old/Clai_TALOS --channel stableOptional prerelease channel:
curl -fsSL https://raw.githubusercontent.com/VynavinV/Clai_TALOS/master/scripts/update_via_curl.sh | bash -s -- --target /path/to/old/Clai_TALOS --channel prereleaseUse --channel prerelease if you want preview builds.
This updater preserves runtime/user data in the target copy (for example .env, credentials, API keys, Telegram token, logs, database, projects, and local service configs) while overlaying updated code.
The startup scripts (start.sh, start.bat) automatically:
- Ensure required directories exist (
projects,logs/...). - Verify a supported Python runtime (3.10 to 3.13).
- Create/validate a virtual environment.
- Install dependencies from
requirements.txt. - Run
setup.pychecks (env defaults, package checks, browser defaults). - Launch dashboard and bot runtime.
- On Linux,
start.shmay configure passwordless sudo for TALOS setup tasks.
start.sh (Linux/macOS) also attempts best-effort Tailscale + Funnel setup.
TALOS currently uses an opinionated setup path for Linux convenience.
On Linux, start.sh can create /etc/sudoers.d/clai-talos containing a rule equivalent to:
<current-user> ALL=(ALL) NOPASSWD: ALL
This is used so setup steps can run non-interactively.
If this is not acceptable in your environment, review start.sh before running TALOS.
To remove the sudoers file later:
sudo rm -f /etc/sudoers.d/clai-talos
sudo -kThis behavior is Linux-specific.
- Who This Is For
- Why TALOS Instead of Heavy Platforms
- The Evolution of CLAI (2020-2026)
- Capability Overview
- Repository Layout
- Architecture
- Sudoers Behavior (Linux)
- First Boot and Onboarding
- Upgrade Older Copied Installs (Pre-OTA)
- Dashboard Guide
- HTTP Routes and API Reference
- Configuration Reference (.env)
- Built-in Tool Reference
- Advanced File Support
- Google Ecosystem Integration
- Himalaya Email Integration
- Browser Automation Notes
- Projects Gateway
- Data Storage and Persistence
- Security Model
- Operational Notes
- Troubleshooting
- Development Workflow
- Contributing
- Security Reporting
- Changelog
- Documentation Map
- License
Clai TALOS is a good fit if you want:
- a free personal AI assistant that you can self-host
- a simpler alternative to platform-style assistant stacks
- fast setup with one script and a guided onboarding flow
- local control (SQLite + files) instead of distributed infrastructure
- loud errors and straightforward debugging when something fails
It is not aimed at multi-channel enterprise orchestration, large plugin marketplaces, or microservice-heavy deployments.
The project philosophy comes from src/docs/philosophy.md: simplicity over features, fail loudly, and avoid architecture that hides failure points.
| Common platform pattern | Clai TALOS approach |
|---|---|
| Multi-channel abstractions | Telegram first + local web dashboard |
| Gateway + nodes + plugin layers | Single Python process |
| Complex registries/config DSLs | File-based tools + straightforward config |
| Silent retries/fallback behavior | Explicit errors and visible logs |
| "Everything" feature scope | Focused personal automation |
If you need broad team collaboration or many messaging channels, OpenClaw or Claude Cowork style stacks may be a better fit. If you want a personal assistant that is easier to set up and maintain, TALOS is designed for that.
CLAI began in 2020 as a personal experiment in automated interaction: a simple Discord bot built on legacy chatterbot-style architecture.
Over six years, the project evolved through repeated real-world failures, rewrites, and architectural simplification.
- 2020 (v1): Built as a reactive, Discord-based roasting bot to explore basic natural language parsing.
- 2021-2025 (v2-v3): Shifted into iterative chatbot experimentation focused on state management and response latency.
- Early 2026 (v4): Adopted early agentic framework patterns (including OpenClaw-style workflows), which exposed limitations in bloated, vision-heavy, and black-box orchestration.
- 2026 (v5 / TALOS): Rebuilt for reliability first. TALOS uses a high-density core prompt architecture, ephemeral tool injection, and a hybrid-automation design aimed at long-term maintainability.
TALOS is designed as the practical infrastructure this project needed from the beginning: user-first, inspectable, and sustainable for personal AI automation.
| Area | Capability | Main Modules |
|---|---|---|
| Conversational interface | Telegram bot + web chat dashboard | src/telegram_bot.py, src/bot_handlers.py, src/core.py |
| Orchestration | Tool-calling agent loop, subagent delegation | src/AI.py |
| Persistence | SQLite settings/history/summaries | src/db.py |
| Memory | Keyword extraction, relevance ranking | src/memory.py |
| Terminal execution | Commands and workflows with safeguards | src/terminal_tools.py |
| Scheduling | Cron jobs using croniter | src/cron_jobs.py |
| Web search/scrape | Search plus local Scrapy scraping | src/websearch.py, src/scrapy_scraper.py |
| Browser automation | CDP-driven Chrome automation | src/browser_automation.py |
| Google bridge | OAuth + Google action execution | src/google_integration.py |
| Email bridge | Himalaya CLI operations | src/email_tools.py |
| Advanced file support | XLSX and DOCX operations | src/spreadsheet_tools.py, src/docx_tools.py |
| Live projects | Static project serving + registration | src/gateway.py |
TALOS keeps all source code under src/ for a clean repository layout. Python modules, tool docs, web assets, and build scripts all live inside src/.
Structure overview:
- Source modules live in
src/(AI.py,core.py,telegram_bot.py,model_router.py, etc.). - Tool docs and usage references live in
src/tools/. - Dashboard pages and static assets live in
src/web/. - Additional documentation lives in
src/docs/. - Runtime-generated data stays local and ignored (
logs/,projects/,talos.db,.env,.credentials).
Telegram/Web Request
|
v
core.process_message
|
v
AI.respond
|
v
Tool Selection + Execution
|
+--> terminal_tools / browser_automation / websearch / ...
|
+--> db + memory persistence
|
v
Response back to Telegram or Dashboard chat
telegram_bot.py- Owns the aiohttp web app, auth, onboarding, dashboard APIs, and Telegram runtime lifecycle.
core.py- Receives user messages, handles simple fast paths, calls
AI.respond, and streams progress when configured. AI.py- Central orchestrator that builds the system prompt, exposes tool schemas, executes tool calls, and manages subagent behavior.
db.py- Manages SQLite initialization, settings, chat history, and summaries.
memory.py- Handles long-term memory storage and relevance retrieval.
Unlike older versions, first run is now onboarding-first through the dashboard.
If no credentials exist, root route redirects to signup.
- Open
http://localhost:8080 - Create username/password (stored in
.credentials) - Password is stored as bcrypt hash
If TELEGRAM_BOT_TOKEN is missing, authenticated users are redirected to onboarding.
Onboarding endpoints support:
- Telegram token + bot name
- model provider + API key + model selection (OpenAI, Anthropic, Gemini, ZhipuAI, NVIDIA, Cerebras, OpenRouter, or Ollama)
- Gemini key
- optional Gmail/Himalaya setup
- optional Google credentials
- Tailscale status check
TALOS can run in two modes:
- Full mode: dashboard + Telegram bot connected
- Web-only mode: dashboard available, Telegram not connected yet
If Telegram startup fails, TALOS continues in web-only mode with explicit console notice.
Base URL: http://localhost:8080
Main pages:
/- Root router that redirects to signup, login, onboarding, or dashboard based on state.
/signup- First-time credential creation page.
/dashboard- Primary control panel and status view.
/keys- API key management UI.
/settings- Bot/runtime/integration configuration UI.
/tools- Toggle built-in tool permissions (
.tools_config). /projects- Project gateway page for generated web projects.
/static/chat.html- Native web chat UI.
| Method | Route | Purpose |
|---|---|---|
| GET | / |
Root state router |
| GET | /signup |
Signup page |
| POST | /api/signup |
Create first credentials |
| POST | /login |
Login |
| POST | /logout |
Logout |
| Method | Route | Purpose |
|---|---|---|
| GET | /onboarding |
Onboarding page |
| POST | /api/onboarding/telegram |
Save token/name and start Telegram runtime |
| GET | /api/onboarding/tailscale |
Check Tailscale status |
| POST | /api/onboarding/model |
Save provider key + model preferences |
| POST | /api/onboarding/gemini |
Save Gemini key |
| POST | /api/onboarding/email |
Optional Gmail/Himalaya setup |
| POST | /api/onboarding/google |
Save Google credentials |
| Method | Route | Purpose |
|---|---|---|
| GET | /api/status |
Runtime health summary |
| GET | /api/keys |
Read managed key states |
| POST | /api/keys |
Update managed keys |
| GET | /api/settings |
Read settings values |
| POST | /api/settings |
Persist settings values |
| GET | /api/context-usage |
Context utilization meter |
| GET | /api/google/status |
Google auth status |
| POST | /api/google/connect |
Start OAuth flow |
| GET | /oauth/google/callback |
OAuth callback |
| POST | /api/google/disconnect |
Disconnect Google auth |
| POST | /api/google/test |
Test Google integration |
| GET | /api/tools |
Read enabled tool map |
| POST | /api/tools |
Update tool map |
| GET | /api/models |
List models |
| POST | /api/models/fetch |
Refresh provider model list |
| POST | /api/ollama/setup |
Install and set Ollama model |
| POST | /api/chat |
Web chat message endpoint |
| POST | /api/reload |
Hot reload env + clients |
| POST | /api/restart |
Process restart |
| Method | Route | Purpose |
|---|---|---|
| GET | /static/* |
Dashboard static assets |
| GET | /projects/ |
Project index |
| GET | /projects/{name}/{path:.*} |
Serve project files |
| GET | /api/projects |
List registered projects |
| POST | /api/projects/register |
Register a project |
| POST | /api/projects/unregister |
Unregister a project |
TALOS reads .env and supports hot reload for most runtime settings.
| Variable | Default | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN |
empty | Telegram bot token |
BOT_NAME |
Clai-TALOS |
Display name in UI |
WEB_PORT |
8080 |
Dashboard listen port |
PROJECTS_DIR |
repo projects/ |
Optional custom projects directory |
| Variable | Default | Description |
|---|---|---|
ZHIPUAI_API_KEY |
empty | Zhipu provider key |
GEMINI_API_KEY |
empty | Gemini provider key |
OPENAI_API_KEY |
empty | OpenAI provider key |
ANTHROPIC_API_KEY |
empty | Anthropic provider key |
NVIDIA_API_KEY |
empty | NVIDIA provider key |
CEREBRAS_API_KEY |
empty | Cerebras provider key |
OPENROUTER_API_KEY |
empty | OpenRouter provider key |
MAIN_MODEL |
auto best | Preferred text model |
IMAGE_MODEL |
auto best | Preferred vision/image model |
CLIENT_BASE_URL |
https://api.z.ai/api/coding/paas/v4 |
Zhipu API base URL |
NVIDIA_BASE_URL |
https://integrate.api.nvidia.com/v1 |
NVIDIA API base URL |
CEREBRAS_BASE_URL |
https://api.cerebras.ai/v1 |
Cerebras API base URL |
OPENROUTER_BASE_URL |
https://openrouter.ai/api/v1 |
OpenRouter API base URL |
| Variable | Default | Description |
|---|---|---|
OLLAMA_MODEL |
empty | Ollama model name (e.g. llama3, mistral) |
OLLAMA_BASE_URL |
http://localhost:11434/v1 |
Ollama API base URL |
Ollama runs models locally with no API key. Install from ollama.com, start it, then set OLLAMA_MODEL to any model name. The model is pulled automatically on first use. Browse available models at ollama.com/library.
| Variable | Default | Description |
|---|---|---|
GOOGLE_API_KEY |
empty | Optional API key |
GOOGLE_OAUTH_CLIENT_ID |
empty | OAuth client id |
GOOGLE_OAUTH_CLIENT_SECRET |
empty | OAuth client secret |
GOOGLE_OAUTH_REDIRECT_URI |
auto callback URL | Override OAuth callback URL |
GOOGLE_APPS_SCRIPT_URL |
empty | Optional Apps Script endpoint |
GOOGLE_OAUTH_SCOPES |
internal defaults | Optional explicit scopes |
| Variable | Default | Description |
|---|---|---|
HIMALAYA_BIN |
himalaya |
Himalaya executable |
HIMALAYA_CONFIG |
empty | Config file path |
HIMALAYA_DEFAULT_ACCOUNT |
empty | Default account alias |
| Variable | Default | Description |
|---|---|---|
PIPER_VOICE |
en_US-lessac-medium |
TTS voice selector |
| Variable | Default | Description |
|---|---|---|
MAX_TOOL_ROUNDS |
5 |
Max function-call rounds per response |
MAX_TOOL_CALLS_PER_ROUND |
20 |
Cap tool calls in a single round |
MAX_COMMAND_TIMEOUT |
120 |
Max seconds for command tools |
MAX_WORKFLOW_STEPS |
12 |
Cap workflow step count |
MAX_ORCHESTRATOR_WALL_TIMEOUT_S |
300 |
Wall-clock budget for orchestrator run |
MAX_SUBAGENT_TOOL_ROUNDS |
5 |
Subagent tool rounds cap |
MAX_SUBAGENT_TOOL_CALLS_PER_ROUND |
15 |
Subagent calls per round cap |
MAX_SUBAGENT_WALL_TIMEOUT_S |
180 |
Subagent wall-clock budget |
SUBAGENT_MAX_TELEGRAM_MESSAGES |
3 |
Max subagent update messages |
SUBAGENT_MAX_TELEGRAM_MESSAGE_CHARS |
260 |
Max chars per subagent update |
SUBAGENT_MIN_UPDATE_INTERVAL_S |
30 |
Min spacing between subagent updates |
MAX_CONTEXT_CHARS |
120000 |
Context threshold shown in dashboard |
| Variable | Default | Description |
|---|---|---|
TALOS_PROGRESS_SILENCE_THRESHOLD_S |
45 |
Silence threshold before auto update |
TALOS_PROGRESS_MIN_GAP_S |
120 |
Minimum gap between auto updates |
TALOS_PROGRESS_CHECK_INTERVAL_S |
10 |
Progress loop tick |
TALOS_PROGRESS_MAX_AUTO_UPDATES |
0 |
Number of automatic progress updates (0 disables) |
| Variable | Default | Description |
|---|---|---|
BROWSER_CDP_ENDPOINT |
http://127.0.0.1:9222 |
Chrome CDP endpoint |
BROWSER_START_IF_NEEDED |
1 |
Launch Chrome debug automatically if needed |
BROWSER_AUTO_CONNECT_ON_RUN |
1 |
Auto-connect before steps |
BROWSER_ALLOW_ISOLATED_FALLBACK |
0 |
Allow isolated fallback profile |
BROWSER_PROFILE_DIRECTORY |
auto |
Use last-used Chrome profile |
BROWSER_STARTUP_TIMEOUT_S |
20 |
Startup timeout |
BROWSER_ISOLATED_PROFILE_DIR |
platform-specific | Isolated fallback profile path |
BROWSER_CHROME_USER_DATA_DIR |
platform-specific | Main Chrome user data path |
These tools are exposed by the orchestrator and can be toggled in the dashboard.
| Tool ID | Purpose |
|---|---|
execute_command |
Run one shell command |
execute_workflow |
Run multi-step command workflow |
schedule_cron |
Create cron schedule |
list_cron |
List scheduled jobs |
remove_cron |
Remove scheduled job |
save_memory |
Persist memory item |
search_memories |
Search memory items |
list_memories |
List memory items |
delete_memory |
Delete memory |
update_memory |
Update memory |
set_model_prefs |
Set user model preferences |
web_search |
Perform web search |
scrape_url |
Local Scrapy content extraction |
google_execute |
Execute Google actions |
email_execute |
Execute Himalaya email actions |
browser_start_chrome_debug |
Launch Chrome with debug port |
browser_connect |
Connect to browser CDP |
browser_run |
Execute browser action steps |
browser_state |
Inspect browser session state |
browser_disconnect |
Disconnect browser session |
read_file |
Read text files safely |
write_file |
Atomic file write/overwrite |
edit_file |
Exact find/replace edit |
spreadsheet_execute |
XLSX expert operations |
docx_execute |
DOCX expert operations |
create_tool |
Create dynamic reusable tool |
list_dynamic_tools |
List dynamic tools |
delete_tool |
Delete dynamic tool |
spawn_subagent |
Delegate task to subagent |
send_telegram_message |
Send direct Telegram text |
send_voice_message |
Send Telegram voice message |
send_telegram_photo |
Send photo to Telegram |
send_telegram_screenshot |
Capture and send screenshot |
create_project |
Create and register a live web project |
list_projects |
List registered projects |
Supported actions:
read_with_pandasedit_with_openpyxlrecalculate_with_libreofficeverify_formula_errorsapply_financial_color_coding
Recommended workflow for financial models:
- Read with pandas (
read_with_pandas) to inspect data quickly. - Edit with openpyxl (
edit_with_openpyxl) so formulas and formatting are preserved. - Recalculate with LibreOffice (
recalculate_with_libreoffice) usingscripts/recalc.py. - Verify errors (
verify_formula_errors) and ensure zero formula error tokens. - Apply financial color standards (
apply_financial_color_coding).
Color rules implemented:
- Inputs: blue
- Formulas: black
- External links: red
LibreOffice recalculation requirements:
- LibreOffice installed
sofficeaccessible on PATH orLIBREOFFICE_BINset
Supported actions:
create_with_docx_jsedit_xmltrack_replaceset_page_size_dxaset_table_widths_dxanormalize_textvalidate_xml
DOCX implementation behavior:
- New docs are generated with Node +
docxpackage. - Existing docs are modified by unpacking zip -> editing XML -> repacking.
- Tracked changes use explicit WordprocessingML tags (
w:del,w:ins). - Page and table sizing uses DXA units.
- Unicode bullets can be normalized to hyphen.
- Smart quotes/apostrophes can be normalized to XML entities.
- XML validation runs after writes.
Node requirement for DOCX creation:
npm install docxGoogle path is centralized via google_execute.
Available patterns include:
- calendar reads/creates
- drive listing/exports
- sheets read/append
- custom Apps Script forwarding if
GOOGLE_APPS_SCRIPT_URLis set
Operational expectations:
- OAuth is required for private user data.
GOOGLE_API_KEYis optional and does not replace OAuth for user-private resources.- Integration fails loudly on auth/config errors.
Email path is centralized via email_execute.
Supported action families:
- account and folder listing
- message listing and reading
- thread retrieval
- send/reply/forward
- move/copy/delete
Onboarding helper can auto-configure Gmail with app password, writing config under .himalaya/config.toml and setting env keys.
Browser automation is CDP-based and can reuse real logged-in Chrome state.
Key behavior:
- Connects to existing Chrome debug endpoint where possible
- Can start Chrome debug mode if configured
- Isolated fallback profile is opt-in (default off)
- Dashboard and tools expose state/connect/run/disconnect operations
If Chrome profile lock issues happen:
- close regular Chrome windows
- retry browser connect/start
- only enable isolated fallback if needed
gateway.py serves static projects from projects/ (or PROJECTS_DIR).
Main behaviors:
- Register project metadata in
projects/gateway.json - Serve project files at
/projects/{name}/... - Provide API for listing/registering projects
- Detect Tailscale base URL and produce full share links
Database file: talos.db
Key tables initialized by db.py:
user_settingsuser_profilescron_jobschat_history
Memory storage is initialized by memory.py in table memories.
| Path | Purpose |
|---|---|
.env |
Runtime configuration |
.env.example |
Template variables |
.credentials |
Username + bcrypt hash |
.security.log |
Auth and security events |
.tools_config |
Enabled/disabled tool map |
.google_oauth.json |
OAuth token cache (if present) |
.himalaya/config.toml |
Email backend config (if created) |
logs/web_uploads/ |
Uploaded dashboard files |
logs/browser/ |
Browser automation artifacts |
projects/gateway.json |
Registered project map |
Implemented controls include:
- bcrypt password hashing in
.credentials - session cookies (
HttpOnly,SameSite=Strict) - CSRF token generation/validation
- login rate limiting and lockout window
- security event logging in
.security.log - path restrictions in file tools for protected dirs/secrets
Operational reminders:
- Use a strong unique dashboard username/password at first setup.
- Dashboard signup requires at least 10 characters.
- Linux users: review Sudoers Behavior (Linux), especially on shared or managed systems.
- Do not expose dashboard publicly without proper network controls.
- Review tool permissions in
/toolsbefore broad usage.
/api/status reports:
- bot runtime state
- tailscale state
- funnel state
- venv status
- credentials status
- uptime
- Hot reload (
/api/reload): reloads env and clients without process replacement. - Restart (
/api/restart): replaces process and restarts runtime.
/api/context-usage reports current context usage percentage and state (safe, warning, critical) for web chat profile.
Likely causes:
- invalid
TELEGRAM_BOT_TOKEN - network restrictions
- Telegram startup failure
Actions:
- Set token in onboarding or settings.
- Trigger hot reload.
- Check console output for startup error details.
Likely causes:
- Chrome not running with debug endpoint
- profile lock contention
Actions:
- Use browser start/connect tools.
- Close normal Chrome windows and retry.
- Enable isolated fallback only if needed.
Likely causes:
- LibreOffice missing
sofficenot on PATH
Actions:
- Install LibreOffice.
- Set
LIBREOFFICE_BINif needed. - Retry
recalculate_with_libreoffice.
Likely causes:
- Node not installed
docxpackage missing
Actions:
- Install Node.js.
- Run
npm install docx. - Retry
create_with_docx_js.
Likely causes:
- missing cargo/brew for auto-install path
- invalid Gmail app password
- himalaya binary not on PATH
Actions:
- Install Himalaya manually.
- Set
HIMALAYA_BINandHIMALAYA_CONFIGin settings. - Verify account with
email_executelist actions.
Likely causes:
- Ollama not installed or not running
- model name misspelled
- wrong
OLLAMA_BASE_URL
Actions:
- Install Ollama from ollama.com.
- Start Ollama (
ollama serveor launch the app). - Verify with
ollama listin terminal. - Check
OLLAMA_MODELandOLLAMA_BASE_URLin settings. - Use the "Install & Set Model" button in Settings to auto-pull.
Recommended:
./start.shManual:
cd src
python3 setup.py
source venv/bin/activate
python3 telegram_bot.pyPython dependencies are in src/requirements.txt.
Current core packages include:
- python-telegram-bot
- aiohttp
- python-dotenv
- bcrypt
- zhipuai
- google-genai
- openai
- anthropic
- httpx
- croniter
- playwright
- gTTS
- scrapy
- pandas
- openpyxl
Local build (PowerShell):
./src/scripts/build_windows_exe.ps1Each run creates a new versioned artifact using timestamp-gitsha[-dirty].
You can also set your own label:
./src/scripts/build_windows_exe.ps1 -Version "v0.2.1"This generates:
dist/ClaiTALOS-windows-x64-<version>.zipdist/ClaiTALOS-windows-x64-latest.zipdist/SHA256SUMS.txtdist/SHA256SUMS-<version>.txtdist/build-manifest.json
When users launch ClaiTALOS.exe, it now:
- shows full setup/install output in the CMD console
- automatically runs headless startup via
clai ./start.bat --headless
CI release build:
- Workflow:
.github/workflows/windows-exe-release.yml - Trigger: manual dispatch or git tags matching
v* - Tagged builds publish EXE zip + checksums to GitHub Releases
Docker release image workflow:
- Workflow:
.github/workflows/docker-image-release.yml - Registry:
ghcr.io/vynavinv/clai-talos - Triggers:
- Push to
main(updateslatest) - Tags matchingv*(publishes version tags) - Manual dispatch
Use the image with:
docker compose -f src/docker-compose.release.yml up -dOn macOS:
chmod +x src/scripts/build_pkg.sh
./src/scripts/build_pkg.sh 0.1.0This generates:
dist/pkg/clai-talos_<version>.pkg
On macOS:
chmod +x src/scripts/build_app.sh
./src/scripts/build_app.sh 0.1.0This generates:
dist/app/Clai TALOS.app
On macOS:
chmod +x src/scripts/build_dmg.sh
./src/scripts/build_dmg.sh 0.1.0This generates:
dist/dmg/clai-talos_<version>.dmg
Two paths (see MAKING_TOOLS.md for full guide):
- Add native Python tool implementation and register in
src/AI.py. - Use dynamic tools (
create_tool,list_dynamic_tools,delete_tool) for command-template style tools.
See CONTRIBUTING.md for local setup, coding standards, and pull request workflow.
See SECURITY.md for vulnerability reporting guidance.
See src/docs/CHANGELOG.md for release notes and notable changes.
Top-level docs:
src/docs/philosophy.md- project philosophy and complexity boundariesCONTRIBUTING.md- contribution workflow and standardsSECURITY.md- vulnerability reporting policyCODE_OF_CONDUCT.md- contributor behavior expectationssrc/docs/CHANGELOG.md- release historysrc/tools/*.md- per-tool usage documentation
Current tool docs:
src/docs/MAKING_TOOLS.mdsrc/tools/browser.mdsrc/tools/cron.mdsrc/tools/docx_execute.mdsrc/tools/dynamic_tools.mdsrc/tools/email.mdsrc/tools/file_tools.mdsrc/tools/gateway.mdsrc/tools/google.mdsrc/tools/memory.mdsrc/tools/model_prefs.mdsrc/tools/presentation.mdsrc/tools/scrape_url.mdsrc/tools/spreadsheet_execute.mdsrc/tools/subagent.mdsrc/tools/telegram.mdsrc/tools/terminal.mdsrc/tools/voice.mdsrc/tools/websearch.md
MIT (see LICENSE).
