Configuration
Customize AirTower with a simple JSON config file.
.airtower.json Reference
Create a .airtower.json file in your repository root. All fields are optional — AirTower uses sensible defaults.
.airtower.json
{
"version": 1,
"test_command": "./run-tests.sh",
"build_command": "./run-build.sh",
"poll_interval": 2,
"features": {
"git_status": true,
"plan_tracking": true,
"bug_tracking": true,
"submodules": true,
"lfs": true
}
}Fields
- version — Config format version. Currently 1.
- test_command — Shell command to run tests. Output is parsed for pass/fail counts.
- build_command — Shell command to run builds. Exit code determines success/failure.
- poll_interval — How often (in seconds) AirTower polls for git changes. Default: 2.
- features — Toggle individual features on or off.
Test & Build Scripts
AirTower runs your test and build commands via wrapper scripts. These scripts should exit with code 0 on success and non-zero on failure.
run-tests.sh
#!/bin/bash
set -e
npm test 2>&1run-build.sh
#!/bin/bash
set -e
npm run build 2>&1Make sure your scripts are executable:
Terminal
chmod +x run-tests.sh run-build.shPLAN.md Format
AirTower reads PLAN.md to track tasks. Use standard markdown checkboxes:
PLAN.md
# Project Plan
## Phase 1: Core Features
- [x] Set up project scaffolding
- [x] Implement git status parsing
- [ ] Add floating panel UI
- [ ] Test on multiple terminals
## Phase 2: Integrations
- [ ] Claude Code wrapper scripts
- [ ] PLAN.md task tracking
- [ ] BUG.md bug monitoringBUG.md Format
AirTower reads BUG.md for bug tracking. Use checkbox syntax in level-2 headers:
BUG.md
# Bugs
## [ ] Bug 1: Panel flickers on resize
Description of the bug and steps to reproduce.
## [x] Bug 2: Incorrect branch name
This bug has been fixed — the branch parser now handles
detached HEAD state correctly.
## [ ] Bug 3: Stash count not updating
Stash count stays stale until the next full poll cycle.