Source-available local AI runtime and CLI for AFKBOT
Project description
AFKBOT
Local AI runtime and CLI for chat, durable task orchestration, browser automation, plugins, MCP, channels, and profile-scoped subagents.
Site · Docs · License · Trademarks
What AFKBOT is
AFKBOT is a source-available local agent platform. You can run it from the terminal, keep work inside chat, fan out to subagents, or move long-running work into Task Flow with durable tasks, dependencies, and review steps.
Use AFKBOT when you want:
- local chat with tools and configurable reasoning
- profile-scoped skills, subagents, permissions, and secrets
- browser, MCP, app, webhook, channel, and automation surfaces
- durable background work instead of one large chat turn
For the full command reference and setup details, use afkbot.io/docs.
Install AFKBOT
Linux and macOS
curl -fsSL https://afkbot.io/install.sh | bash
Windows PowerShell
powershell -c "irm https://afkbot.io/install.ps1 | iex"
After install, open a new terminal and run:
afk setup
afk doctor
afk chat
The hosted installer bootstraps uv, installs AFKBOT as an isolated tool, and keeps
runtime state outside the source tree.
Install from a source checkout
Manual source installs require Python 3.12+ and uv.
uv sync --extra dev
uv run afk setup
uv run afk doctor
uv run afk chat
If you want a shell-installed afk binary directly from the checkout:
bash scripts/install.sh --repo-url "file://$PWD"
Main features
| Feature | What it is | First commands |
|---|---|---|
| Profiles | Isolated runtime agents with their own model, policy, secrets, skills, subagents, channels, and memory. | afk profile add work, afk profile show work, afk profile list |
| Skills | Profile-local markdown instructions the agent can load and use while working. | afk skill set research-helper --from-file ./research-helper.md, afk skill list --profile default |
| Subagents | Specialized child workers under one profile, each with its own descriptor and prompt. | afk subagent set reviewer --from-file ./reviewer.md, afk subagent list --profile default |
| Task Flow | Durable tasks, flows, dependencies, review queues, and background execution. | afk task flow-create --profile default --title "Website launch", afk task board --profile default |
| Automations | Scheduled or webhook-triggered work that runs in the background. | afk automation create ..., afk automation list --profile default |
| Channels | External transports that route messages into a profile. | afk channel telegram add, afk channel telethon add, afk channel list |
| Browser | Local browser runtime for browser.control. |
afk browser install, afk browser status |
| Plugins | Optional platform extensions such as AFKBOT UI. | afk plugin install, afk plugin list |
| MCP | Remote MCP servers connected to a profile. | afk mcp connect https://example.com/mcp --profile default, afk mcp list --profile default |
| Memory | Scoped semantic memory for profile, chat, thread, and user-in-chat contexts. | afk memory list --profile default, afk memory search "topic" --profile default |
Common setup flows
Create a new profile
Use a profile when you want a separate agent with its own provider, model, permissions, skills, subagents, channels, and memory.
afk profile add work
afk profile show work
afk profile list
afk setup creates or reconfigures the default profile. afk profile add is for
additional profiles such as work, support, or research.
Create a skill
Skills are reusable markdown playbooks that the profile can load during work.
afk skill set research-helper --from-file ./research-helper.md
afk skill list --profile default
afk skill show research-helper --profile default
To install a community or GitHub-hosted skill instead of writing one locally:
afk skill marketplace search "review"
afk skill marketplace install default --skill <skill-name>
Create a subagent
Subagents are profile-local specialists. They are usually invoked from afk chat,
Task Flow, or orchestrated runtime flows.
afk subagent set reviewer --from-file ./reviewer.md
afk subagent list --profile default
afk subagent show reviewer --profile default
If you need a direct persisted subagent run from CLI:
afk subagent run --profile default --name reviewer --session cli-demo --prompt "Review this plan"
Start Task Flow
Use Task Flow when the work should survive the current chat turn, have dependencies, or go through review.
afk task flow-create --profile default --title "Website launch"
afk task create --profile default --title "Draft landing copy" --prompt "Write first landing page draft"
afk task board --profile default
Create an automation
Automations run prompts on a schedule or from a webhook. They are executed by the
local runtime, so keep afk start running.
Cron example:
afk automation create \
--profile default \
--name "Daily digest" \
--prompt "Summarize open work and propose the next action." \
--trigger cron \
--cron-expr "0 9 * * 1-5" \
--timezone Europe/Moscow
afk automation list --profile default
Webhook example:
afk automation create --profile default --name "Inbound event" --prompt "Process webhook payload." --trigger webhook
Add a channel
Channels connect outside conversations to a selected profile.
Telegram bot polling:
afk channel telegram add
afk channel telegram status
Private/group allowlists can be configured in the wizard or with flags:
afk channel telegram add owner-bot \
--private-policy allowlist --allow-from 123456789 \
--group-policy allowlist --groups -1001234567890 --group-allow-from 123456789 \
--outbound-allow-to 123456789 \
--binding
Telethon user account:
afk channel telethon add
afk channel telethon authorize <channel_id>
afk channel telethon status
The same access flags are available for Telethon userbot channels. Inside an allowed
profile, the agent can send explicit outbound channel messages with channel.send;
safe channel tool profiles allow that tool while still blocking broad app.run.
Overview:
afk channel list
Install browser runtime
To enable browser.control, install the active browser backend:
afk browser install
afk browser status
Default backend:
playwright_chromiumfor the easiest local setup
Good option for Linux servers:
afk browser backend lightpanda_cdp
afk browser cdp-url http://127.0.0.1:9222
afk browser install
Install a plugin
AFKBOT supports embedded plugins. The default curated path is the AFKBOT UI plugin.
Interactive install:
afk plugin install
Direct install from GitHub:
afk plugin install github:afkbot-io/afkbotuiplugin@main
Useful follow-up commands:
afk plugin list
afk plugin inspect afkbotui
afk start
Daily commands
| Command | What it does |
|---|---|
afk chat |
Start interactive chat or run one turn with --message |
afk start |
Start the local runtime, API, automations, and workers |
afk task board --profile default |
Open the Task Flow backlog for a profile |
afk subagent list --profile default |
Show subagents available to the profile |
afk mcp list --profile default |
Show saved MCP servers for a profile |
afk logs |
Show diagnostic error log files and their path |
afk update |
Update the installed AFKBOT build |
Core model
Keep the mental model simple:
afk chatfor work you want done now- subagents for specialized work under the current profile
Task Flowfor durable tasks, dependencies, handoffs, and reviewafk startwhen you want the local runtime stack running continuously
License
AFKBOT is source-available under the Sustainable Use License 1.0.
- personal, non-commercial, and internal business use are allowed
- modifying and forking are allowed
- selling AFKBOT, reselling copies, or offering it as a paid hosted or white-label service requires separate permission
- the repository does not grant trademark rights to the AFKBOT name or branding
See LICENSE, LICENSE_FAQ.md, and TRADEMARKS.md for the full terms.
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 afkbotio-1.5.0.tar.gz.
File metadata
- Download URL: afkbotio-1.5.0.tar.gz
- Upload date:
- Size: 887.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c514db233972086010e107972427863bc8fc25eb7cc3781d389a6cd70f04f784
|
|
| MD5 |
9b79407c17d9f39ba6f62da192095cfc
|
|
| BLAKE2b-256 |
a5ce7e070d02458b8a40393ff101b06585799a61b3ef46a3373209dae41a2ecf
|
Provenance
The following attestation bundles were made for afkbotio-1.5.0.tar.gz:
Publisher:
publish.yml on afkbot-io/afkbotio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
afkbotio-1.5.0.tar.gz -
Subject digest:
c514db233972086010e107972427863bc8fc25eb7cc3781d389a6cd70f04f784 - Sigstore transparency entry: 1394971545
- Sigstore integration time:
-
Permalink:
afkbot-io/afkbotio@ff10a4489df485b92b3212eab70fca9e12db5a94 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/afkbot-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ff10a4489df485b92b3212eab70fca9e12db5a94 -
Trigger Event:
push
-
Statement type:
File details
Details for the file afkbotio-1.5.0-py3-none-any.whl.
File metadata
- Download URL: afkbotio-1.5.0-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26f988b15ff5e8d9c829cef02c88492342f17846186e35025a1cd13c4820585f
|
|
| MD5 |
2f8ffe128d08f37f5e7f5deb39898228
|
|
| BLAKE2b-256 |
37fd6acad7af228fb6cc2f6685e1e9a05d067b03498ec35353bbb2a71d411604
|
Provenance
The following attestation bundles were made for afkbotio-1.5.0-py3-none-any.whl:
Publisher:
publish.yml on afkbot-io/afkbotio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
afkbotio-1.5.0-py3-none-any.whl -
Subject digest:
26f988b15ff5e8d9c829cef02c88492342f17846186e35025a1cd13c4820585f - Sigstore transparency entry: 1394971547
- Sigstore integration time:
-
Permalink:
afkbot-io/afkbotio@ff10a4489df485b92b3212eab70fca9e12db5a94 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/afkbot-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ff10a4489df485b92b3212eab70fca9e12db5a94 -
Trigger Event:
push
-
Statement type: