Skip to main content

Tack

Self-evolving idiomatic personal assistant. ~15k lines of Python. Local-first. Provider-agnostic.

Install

pip install tack-agent

Imports as tack. CLI command is tack.

From source:

git clone https://github.com/egmaminta/tack && cd tack
uv sync

MCP servers and the Discord connector ship with the base install. The only optional extra is the heavy document parser:

pip install 'tack-agent[docling]'  # PDF/DOCX/PPTX in ReadDoc

Quickstart

Point Tack at any provider that speaks OpenAI's chat-completions API.

ollama pull qwen2.5-coder:7b
tack

That's it. First run prompts you with three questions to seed the identity files (~/.tack/soul.md, <project>/.tack/user.md, <project>/.tack/agents.md). Skip with --no-bootstrap.

Configure

config.yaml in the project root, or ~/.tack/config.yaml for global. Minimal:

provider: ollama
model: qwen2.5-coder:7b

That's the entire required config. Defaults handle the rest.

For paid providers, add api_key: (or set LLM_API_KEY). For non-default endpoints, add api_base:. Everything else (identity, memory, cron, connectors, sandbox, dreaming) is opt-in and documented in the docs below.

Env vars override YAML: LLM_PROVIDER, LLM_MODEL, LLM_API_KEY, LLM_API_BASE, DISCORD_BOT_TOKEN. Prefer env or config.yaml over the --api-key CLI flag; argv values are visible to any process that can read /proc/<pid>/cmdline (Linux) or open Task Manager (Windows).

CLI

tack                          REPL
tack --session bug-auth       resume a named session
tack --provider ollama        override provider
tack --model qwen2.5:7b       override model
tack --thinking high          reasoning effort: none|low|medium|high|xhigh|auto
tack --verbose                show reasoning + telemetry
tack --trace                  write state transitions to ~/.tack/trace/
tack --no-sandbox             run Bash on host instead of Docker
tack --no-mcp                 disable MCP servers
tack --no-bootstrap           skip first-run identity dialogue
tack --daemon                 headless: cron + heartbeat, no stdin

Slash commands

/help       /config     /thinking [level]   /verbose
/compact    /reset      /session {list|load|new|rename}
/skills     /soul       /user               /agents
/mcp        /listen     /copy               /exit

Tools

40 built-in:

Group Tools
Core Bash, Read, Write, Edit, MultiEdit, LS, Grep, Glob, ReadImage, ReadDoc
Sub-agent Agent, ReadSidechain, Compact
Todo + Tasks TodoRead, TodoWrite, TaskCreate, TaskUpdate, TaskList, TaskGet, TaskNext
Web WebSearch, WebFetch
Identity SoulEdit, UserEdit, AgentsEdit
Skills SkillCreate, SkillDelete, SkillList
Memory MemorySearch
Cron CronCreate, CronList, CronDelete, CronEnable, CronDisable
Heartbeat HeartbeatEdit
Discord DiscordChannelCreate, DiscordChannelList
Dream DreamRun, DreamRead
Email EmailSend

MCP tools merge in as mcp__<server>__<tool>.

Mutating tools (Bash, Write, Edit, identity edits, skill mutations, every cron and heartbeat change, DiscordChannelCreate, DreamRun, EmailSend) require approval. approval_policy: auto cannot auto-approve identity, skill, cron, heartbeat, dream, or email sends.

Profiles: lean (6), minimal (12), standard (21, default), full (40). See TOOLS.md.

Layout

tack/
  __init__.py           boot + dispatch (REPL or daemon)
  config.py             layered config: defaults < yaml < env < CLI
  agent/                loop, prompt, session, identity, memory, cron, daemon
  tools/                built-in tools + dispatcher
  connectors/           connector protocol + Discord
  mcp/                  MCP client + manager
  ui/                   abstract UIBridge, RichBridge (REPL), SilentBridge (daemon)

~/.tack/
  sessions/<hash>/      per-workdir session transcripts
  memory.db             SQLite FTS5 cross-session index
  soul.md               global persona
  cron/<id>.json        scheduled jobs
  logs/daemon.log       daemon output

<project>/.tack/
  user.md               per-project profile
  agents.md             per-project rules

Docs

HOW-TO-SOUL.md Identity files, agent self-edits, git integration
HOW-TO-SKILLS.md Built-in skills, enable/disable, write your own
HOW-TO-MEMORY.md SQLite FTS5 cross-session recall
HOW-TO-CRON.md Cron expressions, daemon mode, failure handling
HOW-TO-DISCORD.md Bot setup, allowlist, security model
HOW-TO-DREAM.md Nightly memory consolidation
HOW-TO-EMAIL.md SMTP+TLS, allowlist, approval gate
HOW-TO-MCP.md Connect any MCP server
TOOLS.md Tool catalog, profile selection, sample scenarios
TROUBLESHOOTING.md Top failure modes, 5-minute fixes
CHANGELOG.md Per-release notes, newest first

Status

  • Currently pre-release: v1.x.x. GitHub releases.
  • Python 3.12+, no cloud services required for core function.
  • CI: Linux, macOS, Windows. uv run pytest tests/ -q runs the suite locally.
  • MIT license. See LICENSE.

Metadata

Release files for tack-agent 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tack-agent 1.0.4
File Size Uploaded
tack_agent-1.0.4.tar.gz 197.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tack-agent 1.0.4
File Interpreter ABI Platform
tack_agent-1.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 420.5 kB

Release files / tack_agent-1.0.4.tar.gz

Download URL tack_agent-1.0.4.tar.gz
Size 197.1 kB
Tags Source
SHA-256 checksum
How to use checksums
fe1e450a38ad86468839d01c416e38990d5cea16aa74bbd5cd885ae811e9196c
BLAKE2b-256 checksum
How to use checksums
bf755d4df88dbd3e803a0805ca325be6374bc1fd8aa59e0da5bc8c0efb7a51e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.

Transparency log

Release files / tack_agent-1.0.4-py3-none-any.whl

Download URL tack_agent-1.0.4-py3-none-any.whl
Size 223.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c173b1a2f7c0e4b37d993bc494a3851529ab7f3c88fc24f04fac90f0c70c01c8
BLAKE2b-256 checksum
How to use checksums
1f62456654c1742ed99b05af5fac3507ad6d76c65e225b2bd786f95f7bd0552e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page