AirTower

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>&1
run-build.sh
#!/bin/bash
set -e
npm run build 2>&1

Make sure your scripts are executable:

Terminal
chmod +x run-tests.sh run-build.sh

PLAN.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 monitoring

BUG.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.