Setup & Install
Depth:
ait setup
Cross-platform dependency installer and configuration tool. This is typically the first command to run after installing aitasks.
Run from the project root. Both
ait setupand the curl installer must be executed from the root of your git repository (the directory containing.git/). aitasks stores task files, plans, skills, and configuration inside the repo and relies on git for task IDs, locking, and multi-machine synchronization.
ait setup
Run ait setup --help for the full option list, including the opt-in dependency tiers described below.
Auto-bootstrap: When run via the global shim (~/.local/bin/ait) in a directory without an existing aitasks installation, ait setup automatically downloads and installs the latest release before running the setup flow. This lets you bootstrap new projects with a single command — no need to run the curl | bash installer separately. A help request is the one exception: ait setup --help outside a project never bootstraps — it tells you the options ship with the framework and how to install it first.
Guided setup flow:
OS detection — Automatically detects: macOS, Arch Linux, Debian/Ubuntu, Fedora/RHEL, WSL
CLI tools — Installs missing tools (
fzf,gh/glab/bkt,jq,git,zstd) via the platform’s package manager (pacman, apt, dnf, brew). Auto-detects git remote platform to install the right CLI tool (ghfor GitHub,glabfor GitLab,bktfor Bitbucket). On macOS, requires Homebrew and also installs bash 5.x, Python 3, and coreutilsVersion checks — Verifies Bash >= 4.0 and Python >= 3.9. On macOS, offers to install/upgrade via Homebrew if versions are too old
Git repo — Verifies you are inside a git repository. If no
.git/is found, explains that aitasks is tightly integrated with git and asks to confirm this is the correct project directory before offering to rungit initDraft directory — Creates
aitasks/new/for local draft tasks and adds it to.gitignoreso drafts stay local-onlyTask ID counter — Initializes the
aitask-idscounter branch on the remote for atomic task numbering. This prevents duplicate task IDs when multiple PCs create tasks against the same repoPython venv — Creates virtual environment at
~/.aitask/venv/and installstextual(>=8.1),pyyaml,linkify-it-py,tomli,plotext(forait stats-tuichart panes), and other dependencies with pinned versions. After installing, setup validates that every dependency imports and matches its pinned version range, repairing the venv if not. Recreates the venv if existing Python is too old. For an opt-in PyPy 3.11 venv that speeds upait board(ait setup --with-pypy), see PyPy Runtime.Setup also has two further opt-in dependency tiers, neither installed by default. Each is remembered after the first opt-in, so later plain
ait setupruns revalidate and repair it:ait setup --with-chat— the chat adapter SDKs (discord.py,slack-bolt,slack-sdk)ait setup --with-dev—pytestandpytest-xdist, which give the Python test suite a parallel lane. Contributors only; the suite runs on the standard library’sunittestwithout them — see Testing Changes for the lane’s environment knobs and how to opt out
Global shim — Installs
aitshim at~/.local/bin/aitthat finds the nearest project-localaitdispatcher by walking up the directory tree. Warns if~/.local/binis not in PATHClaude Code permissions — Shows the recommended permission entries, then prompts Y/n to install them into
.claude/settings.local.json. If settings already exist, merges permissions (union of allow-lists)Version check — Compares local version against latest GitHub release and suggests update if newer
Setup also ensures the shared project config file exists at aitasks/metadata/project_config.yaml. That file is seeded from seed/project_config.yaml, tracked in git, and includes project-wide workflow settings such as:
codeagent_coauthor_domain: aitasks.io— the email domain used for custom code-agentCo-Authored-Bytrailersverify_build— the post-implementation build verification command or command list
If you re-run ait setup after customizing codeagent_coauthor_domain, the existing value is preserved.
Claude Code Permissions
When you run ait setup, it offers to install default Claude Code permissions into .claude/settings.local.json. These permissions allow aitask skills to execute common operations (file listing, git commands, aiscript invocations) without prompting for manual approval each time.
The default permissions are defined in seed/claude_settings.local.json and stored at aitasks/metadata/claude_settings.seed.json during installation. If a .claude/settings.local.json already exists, the setup merges permissions (union of both allow-lists, preserving any existing entries). You can decline the permissions prompt and configure them manually later.
Re-run ait setup at any time to add the default permissions if you skipped them initially.
ait upgrade
Update the aitasks framework to a new version.
ait upgrade # Upgrade to latest release
ait upgrade latest # Same as above
ait upgrade 0.2.1 # Upgrade to specific version
How it works:
- Resolves the target version (queries GitHub API for latest, or validates the provided version number)
- Checks if already up to date (skips if versions match)
- Downloads
install.shfrom the target version’s git tag - Runs the installer with
--force, which shows the changelog between current and target versions and asks for confirmation - Performs the full installation (tarball download, skill installation, setup)
- Clears the update check cache
Automatic update check:
The ait dispatcher checks for new versions once per day (at most). When a newer version is available, it shows a brief notice suggesting ait upgrade latest. The check runs in the background to avoid adding latency. It is skipped for help, version, upgrade, and setup commands.
Next: Task Management