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 JSON in each agent's native shape.
  • 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.0.1.tar.gz (75.0 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.0.1-py3-none-any.whl (51.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for twagent-2.0.1.tar.gz
Algorithm Hash digest
SHA256 d163d280c6798d12e2d35e7231bd1f9dec9b9f6524f591dc80f8f54f03d31502
MD5 904775f5ce89e834d6498f48a19863aa
BLAKE2b-256 a2aaba5eabaa4ebed1db4e0e792aeb436fe70c9d00806331d785c7806a7bf6e3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for twagent-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9970c1c036547d1b0423d9d090edecd393e0e600b6aa6e841443ef355c9964bf
MD5 1b4c9609edf887bd3577ec7b1d086932
BLAKE2b-256 dcdab50358b5367be73e8478d9a574aceae9fe9bd06b52bc226e636f9064814d

See more details on using hashes here.

Release history Release notifications | RSS feed

2.3.0

2 files

2.2.1

2 files

2.1.0

2 files

This release

2.0.1 This release

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