Self-hosted Telegram AI agent. 10 tools, skills, subconscious, CLI learning.
Project description
IndieClaw
Personal AI agent on Telegram. Self-hosted, powered by Claude.
Requires: An Anthropic API key or Claude Pro/Max subscription. IndieClaw uses Claude as its reasoning engine — you need one or the other to run it.
Install
pip install indieclaw
Or with uv:
uv tool install indieclaw
Then set up:
indieclaw setup
Setup asks for your Telegram bot token, user ID, and Claude auth. Get a bot token from @BotFather, then send /start to your bot — it will show your Telegram user ID.
Run
indieclaw start # background daemon
indieclaw start -f # foreground
indieclaw chat # interactive TUI (no Telegram needed)
indieclaw logs -f # stream logs
indieclaw stop
indieclaw restart
indieclaw chat launches a terminal UI for chatting directly with your agent — useful for testing, debugging, or when you don't want to go through Telegram.
On Linux with systemd, indieclaw setup installs and starts the service automatically.
Commands
| Command | |
|---|---|
/status |
Model, tools, token usage |
/model |
Switch Claude model |
/effort |
Switch thinking effort |
/reset |
Clear conversation history |
/restart |
Restart the bot |
/update |
Pull latest and restart |
/cc <prompt> |
Live Claude Code session (streaming) |
Workspace
Everything lives in ~/.indieclaw/:
| File | Purpose |
|---|---|
SOUL.md |
Agent identity and instructions |
USER.md |
Your profile (name, timezone, preferences) |
MEMORY.md |
Persistent memory across sessions |
crons.yaml |
Scheduled jobs |
skills/*/SKILL.md |
Skill docs injected into system prompt |
tools/*.py |
Custom tools — hot-loaded, no restart needed |
sessions/*.jsonl |
Conversation logs |
handover.md |
State snapshot across restarts |
subconscious.yaml |
Background reflection threads |
Override the workspace path: INDIECLAW_HOME=/path/to/dir
Subconscious
A background reflection loop that runs every 2 hours. The agent reviews open threads, recent conversations, and memory — then decides whether to act (send a message, spawn a task) or stay quiet.
Threads are tracked in ~/.indieclaw/subconscious.yaml. The agent can add, resolve, or keep threads across cycles. Disable it or change the interval in ~/.indieclaw/config.yaml:
subconscious_enabled: false
subconscious_interval_hours: 4
Custom tools
Drop a .py file in ~/.indieclaw/tools/ with a SCHEMA dict and execute() function. Available on the next message, no restart needed.
Update
indieclaw update # from terminal
/update # from Telegram
Saves a handover note before restarting and picks up where it left off.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file indieclaw-0.1.52.tar.gz.
File metadata
- Download URL: indieclaw-0.1.52.tar.gz
- Upload date:
- Size: 185.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fed449f1e78d064cef9977647746ad87f462128e38f82c8cc8cdcebcdd840e1c
|
|
| MD5 |
4b39403a428a875ecdd361a652251b10
|
|
| BLAKE2b-256 |
aa133cdf920d9af2cb86f8fcdfbdb3d718308fed159d7a6330d76a99451c9266
|
Provenance
The following attestation bundles were made for indieclaw-0.1.52.tar.gz:
Publisher:
release.yml on saikatkumardey/indieclaw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
indieclaw-0.1.52.tar.gz -
Subject digest:
fed449f1e78d064cef9977647746ad87f462128e38f82c8cc8cdcebcdd840e1c - Sigstore transparency entry: 1418904634
- Sigstore integration time:
-
Permalink:
saikatkumardey/indieclaw@34507185f73acf2e84287c88656d31daea485b70 -
Branch / Tag:
refs/tags/v0.1.52 - Owner: https://github.com/saikatkumardey
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34507185f73acf2e84287c88656d31daea485b70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file indieclaw-0.1.52-py3-none-any.whl.
File metadata
- Download URL: indieclaw-0.1.52-py3-none-any.whl
- Upload date:
- Size: 72.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d344fc661d929f9afadcb839db3020c60cfa9fe48187576aa3ee738450a51e40
|
|
| MD5 |
7277379c17e8ccb3630804ce7c295878
|
|
| BLAKE2b-256 |
acbf57c3cb87210de2ba1192be172d7f96dd19038fc4a02264e9cf21f2687ae3
|
Provenance
The following attestation bundles were made for indieclaw-0.1.52-py3-none-any.whl:
Publisher:
release.yml on saikatkumardey/indieclaw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
indieclaw-0.1.52-py3-none-any.whl -
Subject digest:
d344fc661d929f9afadcb839db3020c60cfa9fe48187576aa3ee738450a51e40 - Sigstore transparency entry: 1418904771
- Sigstore integration time:
-
Permalink:
saikatkumardey/indieclaw@34507185f73acf2e84287c88656d31daea485b70 -
Branch / Tag:
refs/tags/v0.1.52 - Owner: https://github.com/saikatkumardey
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34507185f73acf2e84287c88656d31daea485b70 -
Trigger Event:
push
-
Statement type: