Skip to main content

twagent logo

Unified configuration framework for AI coding agents — Claude Code, Copilot CLI, Pi, Codex, VS Code, opencode. One canonical TOML, one CLI, two deploy modes.

What you get

  • One config at ~/.config/twagent/config.toml describes every skill, subagent, prompt, instruction template, and MCP server you care about.
  • One CLI (twagent apply) renders Jinja templates, symlinks file artifacts, and compiles MCP configuration in each agent's native shape.
  • Runtime secrets stay as ${VAR} references (or Codex's environment-backed fields), so twagent never writes resolved credentials.
  • Two deploy modes: globally (each agent's default profile to ~/.claude/, ~/.copilot/, etc.) or locally (into the current directory).
twagent apply --global                          # sync everything globally
twagent apply -s tw-claude                      # local: drop a profile into cwd
twagent apply --global -s e2e-emea              # swap MCP env for the day
twagent apply --global -s e2e-emea -a copilot-cli  # one agent only

Mental model

  ┌──────────────┐    ┌─────────────┐
  │  Registries  │ →  │   Profiles  │ →  apply (local | global)
  │              │    │ (composable │        │
  │ instructions │    │   bundles)  │        ▼
  │ skills       │    │             │   per-agent paths
  │ subagents    │    │  extends... │   (global or cwd-relative)
  │ prompts      │    │             │
  │ servers      │    │             │
  └──────────────┘    └─────────────┘
  • Artifacts live in registries — globally unique name + source path.
  • Profiles bundle artifact references, composable via extends.
  • Agents declare capabilities and per-kind paths (global and per-project).
  • global_profile is the bridge: each agent names exactly one profile as its default loadout. When you run twagent apply --global, the agent's global_profile is resolved (including all extends chains) and the resulting artifacts are deployed to the agent's paths.global.* locations.
  • --select is polymorphic (profile or artifact names, mixed) and exhaustive (only kinds in the selection deploy).

How global_profile works

[agents.copilot-cli]
global_profile = "tw-copilot"   # ← this is the default loadout

[profiles.tw-copilot]
extends      = ["core", "pr_review", "web_research"]
instructions = ["AGENT-md"]

[profiles.core]
skills = ["bkmr-memory", "twmux", "skill-creator", "tw-comprehend"]

[profiles.pr_review]
skills = ["tw-review", "tw-add-pr-review", "tw-check-pr"]

Running twagent apply --global resolves the full extends tree and deploys all referenced skills, instructions, and servers to the agent's global paths. Each agent can have a different global_profile, so Claude, Copilot, and Pi can share profiles (via extends) while each carrying a distinct default set.

Without a global_profile, apply --global skips that agent entirely — it only deploys agents that declare one.

Install

uv tool install twagent
# or, from a clone:
make install

Python 3.13+. Optional: fzf >= 0.35 improves the --interactive picker.

First deploy

twagent edit --init                # bootstrap a commented starter config
$EDITOR ~/.config/twagent/config.toml
twagent apply --global -n          # preview
twagent apply --global             # deploy

→ Full walkthrough: Quick Start (10 min) and Tutorial (30 min, two-agent setup).

Documentation

Read When
Overview What twagent is, who it's for, supported agents.
Quick Start First deploy in 10 minutes.
Tutorial Realistic two-agent setup with project overlay and MCP secrets.
Reference: Commands Every command, every flag.
Reference: Configuration Full TOML schema with worked examples.
FAQ Common questions and gotchas.

Develop

uv sync
make test
make format
make lint
make build

License

BSD-3-Clause.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twagent-2.3.0.tar.gz (80.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

twagent-2.3.0-py3-none-any.whl (53.3 kB view details)

Uploaded Python 3

File details

Details for the file twagent-2.3.0.tar.gz.

File metadata

  • Download URL: twagent-2.3.0.tar.gz
  • Upload date:
  • Size: 80.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for twagent-2.3.0.tar.gz
Algorithm Hash digest
SHA256 f073c003fa0d4b74ba8bca4b69c3cd9c2d4deb4aa813f532743a66e13841614a
MD5 3f60fae4ca5e813bbcac09cdf4c8596d
BLAKE2b-256 39a59700d12c93b44f48d6071be43f601c0992eba9a1e36bdd3944267de33445

See more details on using hashes here.

File details

Details for the file twagent-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: twagent-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 53.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for twagent-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cee7dc21c2e3b4a2ba8a91f91f687f85ac2a57c5b808891916df171a4333c5b5
MD5 ab838948198758064fe311e37281ba01
BLAKE2b-256 c778eff2220580407260bb7eaa4d8a7e77628da385cec94372d3dcda55e96483

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.3.0 This release

2 files

2.2.1

2 files

2.1.0

2 files

2.0.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.2

2 files

1.2.1

2 files

1.1.0

2 files

1.0.0

2 files

0.2.2

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page