@lautaro450/taic-cli
v0.1.1
Published
Terminal CLI and local gateway for The Autonomous AI Company — plan work with Grok, run always-on execution
Maintainers
Readme
taic
Terminal CLI and local execution gateway for The Autonomous AI Company.
taic shell init && source ~/.zshrc
taic create company "Acme" # or activate existing
taic activate acme
taic create task "make a landing page in a new repo" --yes
# Grok plans TaskSpec → Linear Todo with embedded trailer
taic gateway install && taic gateway start
# always-on service (OpenClaw-style); or fallback:
# taic gateway runCompanies work like Python venvs: activate a company and the shell shows (slug) so you always know which company you’re in.
Product loop
taic shell init— once per machine; enables in-shellactivate/ prompt hooks (thensource ~/.zshrc)taic create company "…"— company home + onboard (config, secrets, Linear), or activate an existing companytaic activate <slug>— enter company context + prompt prefix(slug)taic create task "<natural language>"— Grok plans a TaskSpec (title, description, repo intent); CLI creates a Linear Todo with planned fields and an embedded<!-- taic:task-spec -->trailer (not a raw paste of your utterance)taic gateway install && taic gateway start— always-on service polls Linear → claim → (create GitHub repo if needed) → Grok implements → PR → Human Review
Create task (plan, don’t paste)
taic create task "make a landing page in a new repo" --yes- The string is intent, not the Linear title.
- Local Grok (logged-in
grokCLI) classifies and authors a TaskSpec: short title, markdown description, whether a new repo is needed, confidence, optional clarifications. - Unless
--yes(or high confidence in non-interactive mode), you confirm a one-screen plan summary. - Linear issue gets planned title/body plus a machine trailer so the gateway can resolve repo create vs existing mapping.
- Flags:
--plan-only/--dry-run(plan only),--yes,--json,--team,--project.
Gateway: service vs run
| Mode | Command | When |
|------|---------|------|
| Service (default) | taic gateway install then start | Always-on launchd user agent; KeepAlive; logs under company state |
| Attached / fallback | taic gateway run | Same engine in the foreground — debug, or when the service is down |
| Control | status / stop / restart / uninstall | Lifecycle against the company-scoped launchd label |
Service and run share one engine. A single-writer lock per company prevents double-claim if both try to run.
taic gateway install && taic gateway start
taic gateway status
taic gateway stop
# debug / no service:
taic gateway runtaic daemon … is an alias for taic gateway ….
Company activate / deactivate
taic shell init && source ~/.zshrc # once
taic activate acme # prompt: (acme) … (or taic:acme)
deactivate # leave company context
# also:
taic company list # * = active
taic company currentActivation sets company-scoped config/state paths and secrets file. Works alongside conda (base).
Secrets (Infisical)
Never put secrets in YAML. Preferred paths:
taic secrets pull # Infisical → active company secrets file (mode 600)
# or during setup:
taic onboard # config + secrets pull + Linear defaults + toolchain checksCLI auto-loads the company secrets file when keys like LINEAR_API_KEY are unset. Requires Infisical CLI login and a linked project (e.g. projects/taic/.infisical.json).
Install
Requires Bun 1.3+.
git clone https://github.com/dante-perea/taic.git
cd taic
bun run install:local # → ~/.local/bin/taic
export PATH="$HOME/.local/bin:$PATH"
taic shell init && source ~/.zshrc
taic create company "Acme" # onboard, or: taic onboard for active companyPackage name: @taic/cli (bin: taic). Unscoped npm name taic is taken.
Also need on PATH for the full loop: grok (planning + worker), gh (repo create / PRs), infisical (secrets pull).
Commands
| Command | Purpose |
|---------|---------|
| taic create company "…" | Create company + onboard |
| taic shell init | Once — shell hooks so activate works in-shell |
| taic activate <slug> | Enter company (prompt: (slug)) |
| deactivate | Leave company context |
| taic company list | List companies (* = active) |
| taic onboard | Setup for the active company |
| taic create task "…" | Grok plan → Linear Todo + TaskSpec trailer |
| taic gateway install\|start\|stop\|status\|restart\|uninstall | Always-on gateway service (launchd) |
| taic gateway run | Foreground gateway (same engine) |
| taic secrets pull | Infisical → active company secrets |
| taic daemon … | Alias for taic gateway … |
Layout
~/.config/taic/companies/<slug>/
company.json
taic.yaml
env # secrets (mode 600)
activate # shell activation script
~/.local/state/taic/companies/<slug>/
state.db repos/ workspaces/ logs/ gateway.lockStatus
| Surface | State |
|---------|--------|
| taic create company / activate / shell init | Implemented |
| taic onboard | Implemented |
| taic secrets pull | Implemented |
| taic create task (Grok plan → TaskSpec → Linear) | Implemented |
| taic gateway run (lock + orchestrator) | Implemented |
| taic gateway install / start / stop (launchd) | Implemented |
| TaskSpec-driven GitHub repo create preflight | Implemented |
| Claim → Grok → PR e2e | Not fully proven (live-gated) |
| doctor / dashboard | Not yet |
Design: docs/superpowers/specs/2026-08-02-close-the-loop-design.md
Engine internals: docs/superpowers/specs/2026-07-31-taic-cli-daemon-design.md
Paths
| Kind | Default |
|------|---------|
| Company config | ~/.config/taic/companies/<slug>/taic.yaml |
| Company secrets | ~/.config/taic/companies/<slug>/env |
| Company state | ~/.local/state/taic/companies/<slug>/ |
| Gateway lock | …/companies/<slug>/gateway.lock |
| Gateway logs | …/companies/<slug>/logs/gateway.*.log |
| Legacy (no company) | ~/.config/taic/taic.yaml, ~/.config/taic/env |
License
Private — The Autonomous AI Company.
