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.
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
- 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
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).
