try-professional 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. try_professional-0.1.0/.gitignore +32 -0
  2. try_professional-0.1.0/PKG-INFO +268 -0
  3. try_professional-0.1.0/README.md +233 -0
  4. try_professional-0.1.0/pyproject.toml +53 -0
  5. try_professional-0.1.0/src/try_professional/__init__.py +3 -0
  6. try_professional-0.1.0/src/try_professional/_playbooks/__init__.py +0 -0
  7. try_professional-0.1.0/src/try_professional/_playbooks/ceo.md +38 -0
  8. try_professional-0.1.0/src/try_professional/_playbooks/manager.md +27 -0
  9. try_professional-0.1.0/src/try_professional/_playbooks/memory-and-skills.md +20 -0
  10. try_professional-0.1.0/src/try_professional/_playbooks/staff.md +26 -0
  11. try_professional-0.1.0/src/try_professional/_spec/__init__.py +1 -0
  12. try_professional-0.1.0/src/try_professional/_spec/org-v1.schema.json +278 -0
  13. try_professional-0.1.0/src/try_professional/_spec/role-v1.schema.json +122 -0
  14. try_professional-0.1.0/src/try_professional/_templates/README.md +31 -0
  15. try_professional-0.1.0/src/try_professional/_templates/ecommerce-store/template.yaml +114 -0
  16. try_professional-0.1.0/src/try_professional/_templates/general-company/template.yaml +10 -0
  17. try_professional-0.1.0/src/try_professional/_templates/marketing-agency/template.yaml +129 -0
  18. try_professional-0.1.0/src/try_professional/_templates/saas-startup/template.yaml +114 -0
  19. try_professional-0.1.0/src/try_professional/_templates/youtube-shorts-studio/template.yaml +174 -0
  20. try_professional-0.1.0/src/try_professional/adapters/__init__.py +0 -0
  21. try_professional-0.1.0/src/try_professional/adapters/api_runner/README.md +41 -0
  22. try_professional-0.1.0/src/try_professional/adapters/api_runner/__init__.py +0 -0
  23. try_professional-0.1.0/src/try_professional/adapters/api_runner/clients.py +324 -0
  24. try_professional-0.1.0/src/try_professional/adapters/api_runner/prompts.py +220 -0
  25. try_professional-0.1.0/src/try_professional/adapters/api_runner/runner.py +432 -0
  26. try_professional-0.1.0/src/try_professional/adapters/api_runner/scripted.py +150 -0
  27. try_professional-0.1.0/src/try_professional/adapters/api_runner/search.py +42 -0
  28. try_professional-0.1.0/src/try_professional/adapters/api_runner/tools.py +314 -0
  29. try_professional-0.1.0/src/try_professional/adapters/base.py +64 -0
  30. try_professional-0.1.0/src/try_professional/adapters/mcp/README.md +96 -0
  31. try_professional-0.1.0/src/try_professional/adapters/mcp/__init__.py +5 -0
  32. try_professional-0.1.0/src/try_professional/adapters/mcp/claude_code.py +135 -0
  33. try_professional-0.1.0/src/try_professional/adapters/mcp/server.py +178 -0
  34. try_professional-0.1.0/src/try_professional/adapters/mcp/service.py +430 -0
  35. try_professional-0.1.0/src/try_professional/adapters/template/README.md +37 -0
  36. try_professional-0.1.0/src/try_professional/adapters/template/__init__.py +5 -0
  37. try_professional-0.1.0/src/try_professional/adapters/template/adapter.py +84 -0
  38. try_professional-0.1.0/src/try_professional/bench/__init__.py +0 -0
  39. try_professional-0.1.0/src/try_professional/bench/retrieval/__init__.py +0 -0
  40. try_professional-0.1.0/src/try_professional/bench/retrieval/evaluate.py +91 -0
  41. try_professional-0.1.0/src/try_professional/bench/retrieval/loadout_eval.py +105 -0
  42. try_professional-0.1.0/src/try_professional/bench/retrieval/loadout_fixture.yaml +83 -0
  43. try_professional-0.1.0/src/try_professional/bench/retrieval/nonsense.yaml +22 -0
  44. try_professional-0.1.0/src/try_professional/bench/retrieval/queries/ar.yaml +46 -0
  45. try_professional-0.1.0/src/try_professional/bench/retrieval/queries/en.yaml +46 -0
  46. try_professional-0.1.0/src/try_professional/bench/retrieval/queries/en_fresh.yaml +29 -0
  47. try_professional-0.1.0/src/try_professional/bench/retrieval/queries/es.yaml +46 -0
  48. try_professional-0.1.0/src/try_professional/bench/retrieval/queries/id.yaml +52 -0
  49. try_professional-0.1.0/src/try_professional/bench/retrieval/queries/zh.yaml +46 -0
  50. try_professional-0.1.0/src/try_professional/bench/retrieval/skills.yaml +83 -0
  51. try_professional-0.1.0/src/try_professional/check_model.py +503 -0
  52. try_professional-0.1.0/src/try_professional/cli.py +1264 -0
  53. try_professional-0.1.0/src/try_professional/config.py +276 -0
  54. try_professional-0.1.0/src/try_professional/core/__init__.py +1 -0
  55. try_professional-0.1.0/src/try_professional/core/artifacts/__init__.py +65 -0
  56. try_professional-0.1.0/src/try_professional/core/artifacts/models.py +437 -0
  57. try_professional-0.1.0/src/try_professional/core/audit.py +115 -0
  58. try_professional-0.1.0/src/try_professional/core/brief.py +137 -0
  59. try_professional-0.1.0/src/try_professional/core/company.py +548 -0
  60. try_professional-0.1.0/src/try_professional/core/deliverables.py +146 -0
  61. try_professional-0.1.0/src/try_professional/core/gates.py +53 -0
  62. try_professional-0.1.0/src/try_professional/core/ledger.py +83 -0
  63. try_professional-0.1.0/src/try_professional/core/lock.py +97 -0
  64. try_professional-0.1.0/src/try_professional/core/orchestrator.py +478 -0
  65. try_professional-0.1.0/src/try_professional/core/pipeline/__init__.py +52 -0
  66. try_professional-0.1.0/src/try_professional/core/pipeline/machine.py +1366 -0
  67. try_professional-0.1.0/src/try_professional/core/pipeline/state.py +326 -0
  68. try_professional-0.1.0/src/try_professional/core/ports.py +99 -0
  69. try_professional-0.1.0/src/try_professional/generator/__init__.py +40 -0
  70. try_professional-0.1.0/src/try_professional/generator/architect.py +267 -0
  71. try_professional-0.1.0/src/try_professional/generator/compiler.py +328 -0
  72. try_professional-0.1.0/src/try_professional/generator/estimate.py +136 -0
  73. try_professional-0.1.0/src/try_professional/generator/flow.py +389 -0
  74. try_professional-0.1.0/src/try_professional/generator/proposal.py +173 -0
  75. try_professional-0.1.0/src/try_professional/generator/provision.py +414 -0
  76. try_professional-0.1.0/src/try_professional/generator/pull.py +280 -0
  77. try_professional-0.1.0/src/try_professional/generator/review.py +132 -0
  78. try_professional-0.1.0/src/try_professional/generator/templates.py +148 -0
  79. try_professional-0.1.0/src/try_professional/memory/__init__.py +35 -0
  80. try_professional-0.1.0/src/try_professional/memory/backend.py +91 -0
  81. try_professional-0.1.0/src/try_professional/memory/embed_service.py +207 -0
  82. try_professional-0.1.0/src/try_professional/memory/embedding.py +141 -0
  83. try_professional-0.1.0/src/try_professional/memory/gateway.py +138 -0
  84. try_professional-0.1.0/src/try_professional/memory/settings.py +143 -0
  85. try_professional-0.1.0/src/try_professional/org/__init__.py +24 -0
  86. try_professional-0.1.0/src/try_professional/org/loader.py +267 -0
  87. try_professional-0.1.0/src/try_professional/org/model.py +164 -0
  88. try_professional-0.1.0/src/try_professional/org/policy.py +70 -0
  89. try_professional-0.1.0/src/try_professional/packs/__init__.py +114 -0
  90. try_professional-0.1.0/src/try_professional/packs/engineering/pack.yaml +12 -0
  91. try_professional-0.1.0/src/try_professional/packs/engineering/roles/backend.yaml +41 -0
  92. try_professional-0.1.0/src/try_professional/packs/engineering/roles/devops.yaml +41 -0
  93. try_professional-0.1.0/src/try_professional/packs/engineering/roles/frontend.yaml +41 -0
  94. try_professional-0.1.0/src/try_professional/packs/engineering/roles/qa.yaml +40 -0
  95. try_professional-0.1.0/src/try_professional/packs/engineering/roles/tech-lead.yaml +45 -0
  96. try_professional-0.1.0/src/try_professional/packs/executive/pack.yaml +7 -0
  97. try_professional-0.1.0/src/try_professional/packs/executive/roles/ceo.yaml +44 -0
  98. try_professional-0.1.0/src/try_professional/packs/executive/roles/chief-of-staff.yaml +40 -0
  99. try_professional-0.1.0/src/try_professional/packs/finance/pack.yaml +8 -0
  100. try_professional-0.1.0/src/try_professional/packs/finance/roles/finance-lead.yaml +40 -0
  101. try_professional-0.1.0/src/try_professional/packs/legal/pack.yaml +9 -0
  102. try_professional-0.1.0/src/try_professional/packs/legal/roles/compliance-reviewer.yaml +37 -0
  103. try_professional-0.1.0/src/try_professional/packs/legal/roles/counsel.yaml +45 -0
  104. try_professional-0.1.0/src/try_professional/packs/marketing/pack.yaml +11 -0
  105. try_professional-0.1.0/src/try_professional/packs/marketing/roles/content-writer.yaml +38 -0
  106. try_professional-0.1.0/src/try_professional/packs/marketing/roles/marketing-lead.yaml +41 -0
  107. try_professional-0.1.0/src/try_professional/packs/marketing/roles/seo.yaml +36 -0
  108. try_professional-0.1.0/src/try_professional/packs/marketing/roles/social.yaml +36 -0
  109. try_professional-0.1.0/src/try_professional/packs/operations/pack.yaml +9 -0
  110. try_professional-0.1.0/src/try_professional/packs/operations/roles/ops-lead.yaml +41 -0
  111. try_professional-0.1.0/src/try_professional/packs/operations/roles/support.yaml +36 -0
  112. try_professional-0.1.0/src/try_professional/packs/product/pack.yaml +9 -0
  113. try_professional-0.1.0/src/try_professional/packs/product/roles/product-manager.yaml +41 -0
  114. try_professional-0.1.0/src/try_professional/packs/product/roles/ux-researcher.yaml +37 -0
  115. try_professional-0.1.0/src/try_professional/packs/research/pack.yaml +9 -0
  116. try_professional-0.1.0/src/try_professional/packs/research/roles/analyst.yaml +37 -0
  117. try_professional-0.1.0/src/try_professional/packs/research/roles/research-lead.yaml +39 -0
  118. try_professional-0.1.0/src/try_professional/packs/sales/pack.yaml +9 -0
  119. try_professional-0.1.0/src/try_professional/packs/sales/roles/proposal-writer.yaml +37 -0
  120. try_professional-0.1.0/src/try_professional/packs/sales/roles/sales-lead.yaml +39 -0
  121. try_professional-0.1.0/src/try_professional/playbooks.py +52 -0
  122. try_professional-0.1.0/src/try_professional/resources.py +134 -0
  123. try_professional-0.1.0/src/try_professional/skills/__init__.py +49 -0
  124. try_professional-0.1.0/src/try_professional/skills/catalog.py +237 -0
  125. try_professional-0.1.0/src/try_professional/skills/loadouts.py +504 -0
  126. try_professional-0.1.0/src/try_professional/skills/proposals.py +41 -0
  127. try_professional-0.1.0/src/try_professional/skills/rerank.py +412 -0
  128. try_professional-0.1.0/src/try_professional/skills/supply.py +164 -0
  129. try_professional-0.1.0/src/try_professional/skills/trade.py +110 -0
  130. try_professional-0.1.0/tests/__init__.py +0 -0
  131. try_professional-0.1.0/tests/conftest.py +161 -0
  132. try_professional-0.1.0/tests/test_activation.py +240 -0
  133. try_professional-0.1.0/tests/test_audit.py +176 -0
  134. try_professional-0.1.0/tests/test_check_model.py +252 -0
  135. try_professional-0.1.0/tests/test_cli.py +183 -0
  136. try_professional-0.1.0/tests/test_clients.py +348 -0
  137. try_professional-0.1.0/tests/test_company.py +959 -0
  138. try_professional-0.1.0/tests/test_cross_lingual.py +234 -0
  139. try_professional-0.1.0/tests/test_embed_service.py +171 -0
  140. try_professional-0.1.0/tests/test_generator.py +1269 -0
  141. try_professional-0.1.0/tests/test_generator_quality.py +537 -0
  142. try_professional-0.1.0/tests/test_hooks.py +44 -0
  143. try_professional-0.1.0/tests/test_inputs_search.py +301 -0
  144. try_professional-0.1.0/tests/test_llm_routing.py +266 -0
  145. try_professional-0.1.0/tests/test_loadout_precision.py +98 -0
  146. try_professional-0.1.0/tests/test_loadouts.py +754 -0
  147. try_professional-0.1.0/tests/test_mcp.py +470 -0
  148. try_professional-0.1.0/tests/test_mcp_design.py +194 -0
  149. try_professional-0.1.0/tests/test_memory.py +432 -0
  150. try_professional-0.1.0/tests/test_misbehaving_model.py +697 -0
  151. try_professional-0.1.0/tests/test_org.py +119 -0
  152. try_professional-0.1.0/tests/test_pipeline.py +698 -0
  153. try_professional-0.1.0/tests/test_resources.py +239 -0
  154. try_professional-0.1.0/tests/test_runner.py +430 -0
  155. try_professional-0.1.0/tests/test_secret_scan.py +110 -0
  156. try_professional-0.1.0/tests/test_skill_supply.py +117 -0
  157. try_professional-0.1.0/tests/test_spec.py +111 -0
  158. try_professional-0.1.0/tests/test_template_adapter.py +52 -0
  159. try_professional-0.1.0/tests/test_token_budget.py +40 -0
@@ -0,0 +1,32 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ .venv/
5
+ venv/
6
+ build/
7
+ dist/
8
+ *.egg-info/
9
+ .pytest_cache/
10
+ .mypy_cache/
11
+ .ruff_cache/
12
+ .coverage
13
+ htmlcov/
14
+
15
+ # Secrets
16
+ .env
17
+ .env.*
18
+ !.env.example
19
+
20
+ # Local runtime data
21
+ .trypro/
22
+ fastembed-cache/
23
+
24
+ # OS and editors
25
+ .DS_Store
26
+ Thumbs.db
27
+ .idea/
28
+ .vscode/
29
+
30
+ # Claude Code settings and generated role agents
31
+ .claude/
32
+ .mcp.json
@@ -0,0 +1,268 @@
1
+ Metadata-Version: 2.5
2
+ Name: try-professional
3
+ Version: 0.1.0
4
+ Summary: Turn Claude Code into a permanent AI company: a hierarchy of agents with roles, memory and vetted skills, and review gates enforced by code. Multi-agent orchestration via MCP.
5
+ Project-URL: Homepage, https://github.com/goranai/try-professional
6
+ Project-URL: Repository, https://github.com/goranai/try-professional
7
+ Project-URL: Documentation, https://github.com/goranai/try-professional#quickstart
8
+ Project-URL: Issues, https://github.com/goranai/try-professional/issues
9
+ License-Expression: MIT
10
+ Keywords: agent-memory,agent-orchestration,agent-skills,ai-agents,claude,claude-code,hierarchical-agents,llm,mcp,model-context-protocol,multi-agent
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
22
+ Requires-Python: >=3.10
23
+ Requires-Dist: httpx<1,>=0.27
24
+ Requires-Dist: jsonschema<5,>=4.21
25
+ Requires-Dist: mnemosyne-memory[embeddings]<5,>=4
26
+ Requires-Dist: numpy<3,>=1.26
27
+ Requires-Dist: pydantic<3,>=2.7
28
+ Requires-Dist: pyyaml<7,>=6
29
+ Requires-Dist: skill-customs<0.2,>=0.1.0
30
+ Provides-Extra: anthropic
31
+ Requires-Dist: anthropic<3,>=2; extra == 'anthropic'
32
+ Provides-Extra: mcp
33
+ Requires-Dist: mcp<3,>=2; extra == 'mcp'
34
+ Description-Content-Type: text/markdown
35
+
36
+ # Try Professional
37
+
38
+ **Turn Claude Code into a permanent AI company: one prompt builds a hierarchy of agents with roles, memory and vetted skills. Multi-agent orchestration via MCP.**
39
+
40
+ *Preview (v0.1.0). It works, it has rough edges, and it has only been proven on Claude.*
41
+
42
+ You describe a business, and Claude Code designs a company for it: departments, roles, and skills from GitHub that are checked before they're used. You approve it, and then you give it commands. It works only when you give it a command, and it remembers between commands: every role, from the CEO down, keeps its own memory and knows what it's working on.
43
+
44
+ ## Multi-agent orchestration for Claude Code
45
+
46
+ Each piece of work has one owner, gets reviewed, and leaves an audit log you can verify. Each role runs as its own subagent, which sees only its own assignment, memory, and skills. The rules that matter are enforced by code, not by asking a model nicely.
47
+
48
+ - **A company from one description**, adapted from five industry templates, in any language. It proposes, and a person approves.
49
+ - **Skills from GitHub, vetted first.** `skill-customs` pins each one to a commit and checks its license and content, and a model judges which ones fit each role. It can also be used [on its own](https://github.com/goranai/try-professional/blob/main/packages/skill-customs/README.md).
50
+ - **A permanent company.** Roles have their own memory, departments and the company have shared memory, and later commands get the finished work of earlier ones.
51
+ - **Reviews that can't be skipped.** QA reviews everything. Legal review is triggered by what the work is, whatever a model declares.
52
+ - **Rules held by code.** Work must report on every item of its brief. Reviews can't approve with blockers. Unmet criteria and unverified claims reach you even if a final report leaves them out. Every command stops at a token limit: 40,000 for a small one and 150,000 for a large one, by default. [Tests play a misbehaving model](https://github.com/goranai/try-professional/blob/main/packages/try-professional/tests/test_misbehaving_model.py) against these.
53
+ - **Real separation over MCP.** Each role's server shows it only its own assignment, memory, and skills, and the session's server can't do a role's work.
54
+
55
+ ## How it works
56
+
57
+ ```text
58
+ /company <your command>
59
+ |
60
+ v
61
+ CEO: turns it into criteria someone can check
62
+ |
63
+ v
64
+ Department: does the work <-------- sent back, saying what's wrong
65
+ | ^
66
+ v |
67
+ QA reviews it, and then Legal, if it's public or touches licenses or personal data
68
+ |
69
+ v
70
+ CEO: the final report, in your language
71
+ |
72
+ v
73
+ deliverables/<run-id>/index.md, and an audit log
74
+ ```
75
+
76
+ 1. **Design.** Claude Code calls the `trypro` tools to adapt one of five industry templates to your business, and to match skills to roles. [`skill-customs`](https://github.com/goranai/try-professional/blob/main/packages/skill-customs/README.md) pins each skill to a commit, and checks its license and content.
77
+ 2. **Approve.** You read the proposal and approve it in a terminal. No model can do this.
78
+ 3. **Roles.** `trypro agents claude-code` writes one subagent per role. Each has no shell and no file tools, only a server bound to that role.
79
+ 4. **Commands.** Your session only coordinates. It can see who's next, and it can't read an assignment or submit anything. A small command goes straight to one role, and a large one is planned by department heads.
80
+ 5. **Memory.** Roles keep their own memory, and later commands get the finished work of earlier ones.
81
+
82
+ ## Quickstart
83
+
84
+ For Claude Code. You need Python 3.10 or newer, and Claude Code signed in. It uses your own Claude plan, with no API key, and each role runs as its own subagent.
85
+
86
+ **1. Install it, and make a folder for your company.**
87
+
88
+ ```bash
89
+ pip install "try-professional[mcp]"
90
+ mkdir my-company && cd my-company
91
+ ```
92
+
93
+ **2. Set a GitHub token, so it can search for skills.** Without one a company gets no skills, and the review screen says so. If you use the GitHub CLI:
94
+
95
+ ```bash
96
+ export GITHUB_TOKEN=$(gh auth token)
97
+ ```
98
+
99
+ **3. Add it to Claude Code.**
100
+
101
+ ```bash
102
+ claude mcp add trypro -- trypro mcp --coordinator --dir "$PWD"
103
+ ```
104
+
105
+ **4. Describe your business.** Claude Code designs a company and chooses skills, and then gives you a proposal id.
106
+
107
+ ```bash
108
+ claude "Use the trypro tools to design a company for a catering business that delivers office lunches."
109
+ ```
110
+
111
+ **5. Read the proposal, and approve it.** A person has to do this, in a terminal. No model can. The first approval downloads a local embedding model, about 0.22 GB. Your text is embedded on your machine and isn't sent anywhere.
112
+
113
+ ```bash
114
+ trypro init --review <proposal-id>
115
+ ```
116
+
117
+ **6. Create the company's roles.** This writes one subagent per role, and the `/company` command.
118
+
119
+ ```bash
120
+ trypro agents claude-code
121
+ ```
122
+
123
+ **7. Start Claude Code again in this folder, and give the company a command.** When it asks whether you trust this folder, say yes. Otherwise each role's server can't start, and `/company` stops rather than do a role's work itself.
124
+
125
+ ```text
126
+ /company Write a weekly lunch menu and a price list for a new office client with 30 people
127
+ ```
128
+
129
+ Your session only coordinates. Results are files, in `deliverables/<run-id>/`. Start with `index.md`.
130
+
131
+ ### Once a company exists
132
+
133
+ ```text
134
+ /company <a command> Give it more work. It remembers earlier work
135
+ trypro status Memory size, and tokens by month and command
136
+ trypro audit <run-id> Verify a run's audit log
137
+ trypro decide <run-id> <request-id> resume Answer a command that stopped to ask you
138
+ /company continue <run-id> Then carry on with it
139
+ trypro cancel <run-id> Stop it. Its records stay
140
+ ```
141
+
142
+ ## What was tested, and how
143
+
144
+ | Model | How | Result |
145
+ |---|---|---|
146
+ | `claude-sonnet-5-5` for every role, and `claude-haiku-5-5` for matching skills | Claude Code 2.1.319 on Windows 11, through MCP, each role as its own process with only that role's server | 9 of 9 commands finished, on 3 businesses. All 108 artifacts were recorded as coming from the right role's own server. [Details](https://github.com/goranai/try-professional/blob/main/docs/research/journey/README.md) |
147
+ | `claude-sonnet-5-5` for every role | `/company` in one Claude Code session, each role as a subagent, on a business kept out of all training | One prompt to a company, a command, and a later related command that followed the first. All 23 artifacts came from the right role's own server. It passed on its sixth run, and the fifth stopped at the token limit. [Every run](https://github.com/goranai/try-professional/blob/main/docs/research/journey/README.md#acceptance-journey) |
148
+ | `deepseek-v4.1-flash-1017` | API runner | `check-model`: usable with caveats. **The same small command finished once in three runs**, and the other two blocked. [Why](https://github.com/goranai/try-professional/blob/main/docs/research/journey/deepseek-diagnosis.md) |
149
+
150
+ Those are the only models tested. The test suite runs on a scripted model, on Linux, macOS, and Windows.
151
+
152
+ **This doesn't show that a cheap model does good work.** Quality on a cheap model is for v0.2.
153
+
154
+ ## Do reviews catch flawed work?
155
+
156
+ We put flawed documents into real runs over MCP, and counted how many reviewers rejected for that flaw. [How it ran, and every verdict](https://github.com/goranai/try-professional/blob/main/docs/research/qa_gates/README.md).
157
+
158
+ | Flaw | Caught, on the current review rules |
159
+ |---|---|
160
+ | A wrong number | 6 of 6 |
161
+ | A claim with no source | 6 of 6 |
162
+ | The wrong language | 6 of 6 |
163
+ | A requirement missed from the brief | 6 of 6 |
164
+ | A clean document wrongly sent back | 1 of 6 |
165
+
166
+ **This is a small test, and it only shows so much.** One run of each document, on `claude-sonnet-5-5` only. The documents are short, with one flaw each, and every fact could be checked against the command. Long documents, wrong facts about the world, Legal on its own, and cheap models weren't tested.
167
+
168
+ The rules are stricter because of this test. On the earlier rules, a reviewer noted an invented claim as minor, and 3 of 4 were caught. The stricter rules also cost something: reviewers now send back some work that didn't need it.
169
+
170
+ ## What it costs
171
+
172
+ Tokens per command on Claude, measured. It's run through Claude Code, so each role's process also carries Claude Code's own instructions, which is most of the cached input. An API model's numbers will differ. The price is what Claude Code reports at API list prices. On a Claude plan, this comes out of your plan's usage instead.
173
+
174
+ | Business | Command | Input | Cache write | Cache read | Output | List price |
175
+ |---|---|---|---|---|---|---|
176
+ | Catering | Weekly menu and price list | 36 | 26,552 | 88,837 | 6,360 | $0.18 |
177
+ | Catering | Two-sentence customer reply | 40 | 24,500 | 102,816 | 4,254 | $0.15 |
178
+ | Catering | Next week's menu, with no repeats | 28 | 22,852 | 78,370 | 5,774 | $0.16 |
179
+ | Shorts | 5 Shorts | 134 | 172,426 | 454,803 | 55,696 | $1.29 |
180
+ | Shorts | One title | 36 | 21,510 | 86,108 | 3,665 | $0.13 |
181
+ | Shorts | 3 more, building on last week | 140 | 251,760 | 573,295 | 60,220 | $1.67 |
182
+ | Indonesian snacks | Two-week promotion plan | 40 | 34,659 | 109,538 | 11,300 | $0.26 |
183
+ | Indonesian snacks | One customer reply | 36 | 22,775 | 86,890 | 4,230 | $0.14 |
184
+ | Indonesian snacks | The next two weeks | 44 | 39,627 | 138,566 | 13,481 | $0.31 |
185
+
186
+ Those ran before reviews got stricter, which adds rework. The acceptance run on the current rules shows that, with a `/company` session and its subagents together:
187
+
188
+ | Business | Command | Input | Cache write | Cache read | Output | List price |
189
+ |---|---|---|---|---|---|---|
190
+ | Web design agency | Design the company, from one prompt | 36 | 46,635 | 471,088 | 6,075 | $0.29 |
191
+ | Web design agency | One-page proposal, 1 round of rework | 90 | 77,480 | 743,298 | 15,794 | $0.46 |
192
+ | Web design agency | Homepage copy, 2 rounds of rework | 130 | 106,645 | 1,063,112 | 25,436 | $0.66 |
193
+
194
+ A hierarchy spends more than one agent would. On the first table's small commands, reviews alone took 39% to 46% of the output tokens. No comparison with a flat setup has been measured yet, and that benchmark is planned for v0.2.
195
+
196
+ On DeepSeek through the API runner, the one small command that finished took 25,020 tokens: [details](https://github.com/goranai/try-professional/blob/main/docs/research/journey/check_model_deepseek.json).
197
+
198
+ ## What it needs
199
+
200
+ - **Python 3.10 or newer.**
201
+ - **Memory:** about 750 MB for a typical command with 22 roles, because the company shares one embedding process. The most measured in a real command was 829 MB. Having every role's server open at once takes about 2.7 GB. [Measured on Windows 11](https://github.com/goranai/try-professional/blob/main/docs/research/memory/README.md). It waits until 1.8 GB is free before starting, and that includes a 1 GB safety margin. Change it with `TRYPRO_MEMORY_MARGIN_MB`.
202
+
203
+ ## Known limits
204
+
205
+ - **It's only been proven on Claude.** On a cheap model, expect blocked commands and wasted tokens.
206
+ - **Skill coverage is thin.** In real generations, 14% to 29% of what roles need had a matching skill, and the review screen says so. Roles without a skill rely on their instructions. Judged on a labelled set, skill matching found 33 of 44 right skills, and 19 of its 52 suggestions were wrong, so read what you approve.
207
+ - **Cost per command is high** for small jobs. See above. A two-sentence reply goes through intake, the work, QA, legal, and a final report.
208
+ - **It works with files only.** It doesn't publish, send, buy, render video, or browse the web unless you turn on search. Its output tells you what a person must check.
209
+ - **It can't check facts without sources.** With no web access, it marks claims as unverified, and leaves placeholders such as `[Bakery name]` or `[ISI PROMO]` for you to fill in.
210
+ - **Reviews aren't proof.** [The test above](https://github.com/goranai/try-professional/blob/main/docs/research/qa_gates/README.md) is small, and a weak reviewer can still approve weak work. They can also be too strict, and send back good work.
211
+ - **A command can stop at its token limit.** Rework costs tokens. In one acceptance run a small command stopped at its 40,000 limit just short of finishing, and asked a person, and in the run that finished the same command used about 37,800. Until it finishes, its work isn't exported as files. Once you answer its question, `/company continue <run-id>` picks it up, and it did finish when we tried it.
212
+ - **Over MCP, token limits run on an estimate** of what passes through the server, which undercounts by several times, so the 40,000 above is that estimate. Your client's own limits matter more there.
213
+ - **Keep Claude Code's permission prompts on.** Your own session only coordinates through its server, but with every permission on it also has a shell. Approving a company and answering a run's questions refuse anything but a real terminal, and a session with a shell could still change your files, including the company's records. In testing, one with every permission on tried to answer a budget question for its person, which is why those checks exist.
214
+ - **Operator mode over MCP** has one model play every role, so separation there is only procedural. `trypro agents claude-code` doesn't use it.
215
+ - **Indonesian output hasn't been reviewed by a native speaker.** Other languages haven't been tried on full commands. Retrieval queries in other languages haven't been natively reviewed either.
216
+ - **The journey ran on one Windows machine,** and on Claude Code 2.1.319. Linux and macOS have only run the test suite.
217
+
218
+ ## FAQ
219
+
220
+ **How is this different from using one agent?** One agent is cheaper and faster, and for a small one-off job it's probably the better choice. Here, reviews alone took 39% to 46% of the output tokens on small commands. What that buys is a reviewer who didn't do the work, memory for each role across commands, and an audit log. No comparison of results has been measured yet.
221
+
222
+ **How is it different from a flat swarm?** In a swarm, agents work side by side. Here work flows through a hierarchy, each piece has one owner, and a role can't see another role's memory or assignments, because its server won't show them. We haven't measured whether that gives better results. That benchmark is on the roadmap.
223
+
224
+ **What does a command cost?** On a Claude plan, it comes out of your plan's usage. At API list prices, the small commands we measured came to about $0.13 to $0.66, and the largest to $1.67. Rework makes it cost more. See [the tables](#what-it-costs). A command stops and asks you at 40,000 tokens if small, or 150,000 if large.
225
+
226
+ **Which models work?** It has been proven on `claude-sonnet-5-5` and `claude-haiku-5-5`, through Claude Code. On `deepseek-v4.1-flash-1017`, the same small command finished in one run of three. No other model has been tried. See [what was tested](#what-was-tested-and-how).
227
+
228
+ ## Experimental
229
+
230
+ Available, not promised. These exist and have tests, and they aren't what this release stands behind.
231
+
232
+ **The API runner,** for any OpenAI-compatible model: `deepseek-v4.1-flash-1017` is the only one tried, and the table above shows how that went. Grok and others should work the same way, and haven't been tried. Copy `.env.example` to `.env`, set `TRYPRO_LLM_BASE_URL`, `TRYPRO_LLM_API_KEY`, `TRYPRO_LLM_MODEL`, and `GITHUB_TOKEN`, and **check the model first:**
233
+
234
+ ```bash
235
+ trypro check-model
236
+ trypro init "a YouTube Shorts content company"
237
+ trypro run "Make 5 Shorts about AI tools for this week"
238
+ trypro run --queue "<a command>" # Then: trypro next
239
+ trypro resume <run-id> # Continue unfinished work
240
+ ```
241
+
242
+ `check-model` tests tool calling, strict structures, following a brief, replying in the command's language, and treating data as data. Then it has the model finish one small real command, through every review, within 40,000 tokens. It reports **suitable**, **usable with caveats**, or **not recommended**, and it can spend up to about 45,000 tokens. It's one run, so a different run can go differently.
243
+
244
+ **A look with no model at all.** A scripted model stands in, so this shows how the company works, not what a model would write:
245
+
246
+ ```bash
247
+ trypro init
248
+ trypro run --dry-run "Build a health check endpoint"
249
+ trypro check-model --dry-run
250
+ ```
251
+
252
+ **Other MCP clients,** such as Cursor and Codex: the server should work with them, and none has been tried. [Setting one up, and what it can't guarantee](https://github.com/goranai/try-professional/blob/main/packages/try-professional/src/try_professional/adapters/mcp/README.md).
253
+
254
+ ## Roadmap
255
+
256
+ - **More runtimes.** Hermes and others. There's no Hermes adapter yet, and `skill-customs`' guide for it hasn't been tried on a real install. "Add support for <runtime>" issues are open to anyone.
257
+ - **Quality on cheap models,** through self-refinement.
258
+ - **A three-way benchmark** against a flat swarm and a single agent.
259
+ - **Dreaming,** where a company consolidates what it learned.
260
+
261
+ ## Learn more
262
+
263
+ - [Architecture](https://github.com/goranai/try-professional/blob/main/docs/architecture.md)
264
+ - [The MCP adapter, and what it can and can't guarantee](https://github.com/goranai/try-professional/blob/main/packages/try-professional/src/try_professional/adapters/mcp/README.md)
265
+ - [Example: a YouTube Shorts studio](https://github.com/goranai/try-professional/blob/main/examples/youtube-shorts-studio/README.md), on the experimental API runner
266
+ - [Contributing](https://github.com/goranai/try-professional/blob/main/CONTRIBUTING.md), and [security](https://github.com/goranai/try-professional/blob/main/SECURITY.md)
267
+
268
+ MIT licensed. No telemetry. Keys come from environment variables, and are never logged.
@@ -0,0 +1,233 @@
1
+ # Try Professional
2
+
3
+ **Turn Claude Code into a permanent AI company: one prompt builds a hierarchy of agents with roles, memory and vetted skills. Multi-agent orchestration via MCP.**
4
+
5
+ *Preview (v0.1.0). It works, it has rough edges, and it has only been proven on Claude.*
6
+
7
+ You describe a business, and Claude Code designs a company for it: departments, roles, and skills from GitHub that are checked before they're used. You approve it, and then you give it commands. It works only when you give it a command, and it remembers between commands: every role, from the CEO down, keeps its own memory and knows what it's working on.
8
+
9
+ ## Multi-agent orchestration for Claude Code
10
+
11
+ Each piece of work has one owner, gets reviewed, and leaves an audit log you can verify. Each role runs as its own subagent, which sees only its own assignment, memory, and skills. The rules that matter are enforced by code, not by asking a model nicely.
12
+
13
+ - **A company from one description**, adapted from five industry templates, in any language. It proposes, and a person approves.
14
+ - **Skills from GitHub, vetted first.** `skill-customs` pins each one to a commit and checks its license and content, and a model judges which ones fit each role. It can also be used [on its own](https://github.com/goranai/try-professional/blob/main/packages/skill-customs/README.md).
15
+ - **A permanent company.** Roles have their own memory, departments and the company have shared memory, and later commands get the finished work of earlier ones.
16
+ - **Reviews that can't be skipped.** QA reviews everything. Legal review is triggered by what the work is, whatever a model declares.
17
+ - **Rules held by code.** Work must report on every item of its brief. Reviews can't approve with blockers. Unmet criteria and unverified claims reach you even if a final report leaves them out. Every command stops at a token limit: 40,000 for a small one and 150,000 for a large one, by default. [Tests play a misbehaving model](https://github.com/goranai/try-professional/blob/main/packages/try-professional/tests/test_misbehaving_model.py) against these.
18
+ - **Real separation over MCP.** Each role's server shows it only its own assignment, memory, and skills, and the session's server can't do a role's work.
19
+
20
+ ## How it works
21
+
22
+ ```text
23
+ /company <your command>
24
+ |
25
+ v
26
+ CEO: turns it into criteria someone can check
27
+ |
28
+ v
29
+ Department: does the work <-------- sent back, saying what's wrong
30
+ | ^
31
+ v |
32
+ QA reviews it, and then Legal, if it's public or touches licenses or personal data
33
+ |
34
+ v
35
+ CEO: the final report, in your language
36
+ |
37
+ v
38
+ deliverables/<run-id>/index.md, and an audit log
39
+ ```
40
+
41
+ 1. **Design.** Claude Code calls the `trypro` tools to adapt one of five industry templates to your business, and to match skills to roles. [`skill-customs`](https://github.com/goranai/try-professional/blob/main/packages/skill-customs/README.md) pins each skill to a commit, and checks its license and content.
42
+ 2. **Approve.** You read the proposal and approve it in a terminal. No model can do this.
43
+ 3. **Roles.** `trypro agents claude-code` writes one subagent per role. Each has no shell and no file tools, only a server bound to that role.
44
+ 4. **Commands.** Your session only coordinates. It can see who's next, and it can't read an assignment or submit anything. A small command goes straight to one role, and a large one is planned by department heads.
45
+ 5. **Memory.** Roles keep their own memory, and later commands get the finished work of earlier ones.
46
+
47
+ ## Quickstart
48
+
49
+ For Claude Code. You need Python 3.10 or newer, and Claude Code signed in. It uses your own Claude plan, with no API key, and each role runs as its own subagent.
50
+
51
+ **1. Install it, and make a folder for your company.**
52
+
53
+ ```bash
54
+ pip install "try-professional[mcp]"
55
+ mkdir my-company && cd my-company
56
+ ```
57
+
58
+ **2. Set a GitHub token, so it can search for skills.** Without one a company gets no skills, and the review screen says so. If you use the GitHub CLI:
59
+
60
+ ```bash
61
+ export GITHUB_TOKEN=$(gh auth token)
62
+ ```
63
+
64
+ **3. Add it to Claude Code.**
65
+
66
+ ```bash
67
+ claude mcp add trypro -- trypro mcp --coordinator --dir "$PWD"
68
+ ```
69
+
70
+ **4. Describe your business.** Claude Code designs a company and chooses skills, and then gives you a proposal id.
71
+
72
+ ```bash
73
+ claude "Use the trypro tools to design a company for a catering business that delivers office lunches."
74
+ ```
75
+
76
+ **5. Read the proposal, and approve it.** A person has to do this, in a terminal. No model can. The first approval downloads a local embedding model, about 0.22 GB. Your text is embedded on your machine and isn't sent anywhere.
77
+
78
+ ```bash
79
+ trypro init --review <proposal-id>
80
+ ```
81
+
82
+ **6. Create the company's roles.** This writes one subagent per role, and the `/company` command.
83
+
84
+ ```bash
85
+ trypro agents claude-code
86
+ ```
87
+
88
+ **7. Start Claude Code again in this folder, and give the company a command.** When it asks whether you trust this folder, say yes. Otherwise each role's server can't start, and `/company` stops rather than do a role's work itself.
89
+
90
+ ```text
91
+ /company Write a weekly lunch menu and a price list for a new office client with 30 people
92
+ ```
93
+
94
+ Your session only coordinates. Results are files, in `deliverables/<run-id>/`. Start with `index.md`.
95
+
96
+ ### Once a company exists
97
+
98
+ ```text
99
+ /company <a command> Give it more work. It remembers earlier work
100
+ trypro status Memory size, and tokens by month and command
101
+ trypro audit <run-id> Verify a run's audit log
102
+ trypro decide <run-id> <request-id> resume Answer a command that stopped to ask you
103
+ /company continue <run-id> Then carry on with it
104
+ trypro cancel <run-id> Stop it. Its records stay
105
+ ```
106
+
107
+ ## What was tested, and how
108
+
109
+ | Model | How | Result |
110
+ |---|---|---|
111
+ | `claude-sonnet-5-5` for every role, and `claude-haiku-5-5` for matching skills | Claude Code 2.1.319 on Windows 11, through MCP, each role as its own process with only that role's server | 9 of 9 commands finished, on 3 businesses. All 108 artifacts were recorded as coming from the right role's own server. [Details](https://github.com/goranai/try-professional/blob/main/docs/research/journey/README.md) |
112
+ | `claude-sonnet-5-5` for every role | `/company` in one Claude Code session, each role as a subagent, on a business kept out of all training | One prompt to a company, a command, and a later related command that followed the first. All 23 artifacts came from the right role's own server. It passed on its sixth run, and the fifth stopped at the token limit. [Every run](https://github.com/goranai/try-professional/blob/main/docs/research/journey/README.md#acceptance-journey) |
113
+ | `deepseek-v4.1-flash-1017` | API runner | `check-model`: usable with caveats. **The same small command finished once in three runs**, and the other two blocked. [Why](https://github.com/goranai/try-professional/blob/main/docs/research/journey/deepseek-diagnosis.md) |
114
+
115
+ Those are the only models tested. The test suite runs on a scripted model, on Linux, macOS, and Windows.
116
+
117
+ **This doesn't show that a cheap model does good work.** Quality on a cheap model is for v0.2.
118
+
119
+ ## Do reviews catch flawed work?
120
+
121
+ We put flawed documents into real runs over MCP, and counted how many reviewers rejected for that flaw. [How it ran, and every verdict](https://github.com/goranai/try-professional/blob/main/docs/research/qa_gates/README.md).
122
+
123
+ | Flaw | Caught, on the current review rules |
124
+ |---|---|
125
+ | A wrong number | 6 of 6 |
126
+ | A claim with no source | 6 of 6 |
127
+ | The wrong language | 6 of 6 |
128
+ | A requirement missed from the brief | 6 of 6 |
129
+ | A clean document wrongly sent back | 1 of 6 |
130
+
131
+ **This is a small test, and it only shows so much.** One run of each document, on `claude-sonnet-5-5` only. The documents are short, with one flaw each, and every fact could be checked against the command. Long documents, wrong facts about the world, Legal on its own, and cheap models weren't tested.
132
+
133
+ The rules are stricter because of this test. On the earlier rules, a reviewer noted an invented claim as minor, and 3 of 4 were caught. The stricter rules also cost something: reviewers now send back some work that didn't need it.
134
+
135
+ ## What it costs
136
+
137
+ Tokens per command on Claude, measured. It's run through Claude Code, so each role's process also carries Claude Code's own instructions, which is most of the cached input. An API model's numbers will differ. The price is what Claude Code reports at API list prices. On a Claude plan, this comes out of your plan's usage instead.
138
+
139
+ | Business | Command | Input | Cache write | Cache read | Output | List price |
140
+ |---|---|---|---|---|---|---|
141
+ | Catering | Weekly menu and price list | 36 | 26,552 | 88,837 | 6,360 | $0.18 |
142
+ | Catering | Two-sentence customer reply | 40 | 24,500 | 102,816 | 4,254 | $0.15 |
143
+ | Catering | Next week's menu, with no repeats | 28 | 22,852 | 78,370 | 5,774 | $0.16 |
144
+ | Shorts | 5 Shorts | 134 | 172,426 | 454,803 | 55,696 | $1.29 |
145
+ | Shorts | One title | 36 | 21,510 | 86,108 | 3,665 | $0.13 |
146
+ | Shorts | 3 more, building on last week | 140 | 251,760 | 573,295 | 60,220 | $1.67 |
147
+ | Indonesian snacks | Two-week promotion plan | 40 | 34,659 | 109,538 | 11,300 | $0.26 |
148
+ | Indonesian snacks | One customer reply | 36 | 22,775 | 86,890 | 4,230 | $0.14 |
149
+ | Indonesian snacks | The next two weeks | 44 | 39,627 | 138,566 | 13,481 | $0.31 |
150
+
151
+ Those ran before reviews got stricter, which adds rework. The acceptance run on the current rules shows that, with a `/company` session and its subagents together:
152
+
153
+ | Business | Command | Input | Cache write | Cache read | Output | List price |
154
+ |---|---|---|---|---|---|---|
155
+ | Web design agency | Design the company, from one prompt | 36 | 46,635 | 471,088 | 6,075 | $0.29 |
156
+ | Web design agency | One-page proposal, 1 round of rework | 90 | 77,480 | 743,298 | 15,794 | $0.46 |
157
+ | Web design agency | Homepage copy, 2 rounds of rework | 130 | 106,645 | 1,063,112 | 25,436 | $0.66 |
158
+
159
+ A hierarchy spends more than one agent would. On the first table's small commands, reviews alone took 39% to 46% of the output tokens. No comparison with a flat setup has been measured yet, and that benchmark is planned for v0.2.
160
+
161
+ On DeepSeek through the API runner, the one small command that finished took 25,020 tokens: [details](https://github.com/goranai/try-professional/blob/main/docs/research/journey/check_model_deepseek.json).
162
+
163
+ ## What it needs
164
+
165
+ - **Python 3.10 or newer.**
166
+ - **Memory:** about 750 MB for a typical command with 22 roles, because the company shares one embedding process. The most measured in a real command was 829 MB. Having every role's server open at once takes about 2.7 GB. [Measured on Windows 11](https://github.com/goranai/try-professional/blob/main/docs/research/memory/README.md). It waits until 1.8 GB is free before starting, and that includes a 1 GB safety margin. Change it with `TRYPRO_MEMORY_MARGIN_MB`.
167
+
168
+ ## Known limits
169
+
170
+ - **It's only been proven on Claude.** On a cheap model, expect blocked commands and wasted tokens.
171
+ - **Skill coverage is thin.** In real generations, 14% to 29% of what roles need had a matching skill, and the review screen says so. Roles without a skill rely on their instructions. Judged on a labelled set, skill matching found 33 of 44 right skills, and 19 of its 52 suggestions were wrong, so read what you approve.
172
+ - **Cost per command is high** for small jobs. See above. A two-sentence reply goes through intake, the work, QA, legal, and a final report.
173
+ - **It works with files only.** It doesn't publish, send, buy, render video, or browse the web unless you turn on search. Its output tells you what a person must check.
174
+ - **It can't check facts without sources.** With no web access, it marks claims as unverified, and leaves placeholders such as `[Bakery name]` or `[ISI PROMO]` for you to fill in.
175
+ - **Reviews aren't proof.** [The test above](https://github.com/goranai/try-professional/blob/main/docs/research/qa_gates/README.md) is small, and a weak reviewer can still approve weak work. They can also be too strict, and send back good work.
176
+ - **A command can stop at its token limit.** Rework costs tokens. In one acceptance run a small command stopped at its 40,000 limit just short of finishing, and asked a person, and in the run that finished the same command used about 37,800. Until it finishes, its work isn't exported as files. Once you answer its question, `/company continue <run-id>` picks it up, and it did finish when we tried it.
177
+ - **Over MCP, token limits run on an estimate** of what passes through the server, which undercounts by several times, so the 40,000 above is that estimate. Your client's own limits matter more there.
178
+ - **Keep Claude Code's permission prompts on.** Your own session only coordinates through its server, but with every permission on it also has a shell. Approving a company and answering a run's questions refuse anything but a real terminal, and a session with a shell could still change your files, including the company's records. In testing, one with every permission on tried to answer a budget question for its person, which is why those checks exist.
179
+ - **Operator mode over MCP** has one model play every role, so separation there is only procedural. `trypro agents claude-code` doesn't use it.
180
+ - **Indonesian output hasn't been reviewed by a native speaker.** Other languages haven't been tried on full commands. Retrieval queries in other languages haven't been natively reviewed either.
181
+ - **The journey ran on one Windows machine,** and on Claude Code 2.1.319. Linux and macOS have only run the test suite.
182
+
183
+ ## FAQ
184
+
185
+ **How is this different from using one agent?** One agent is cheaper and faster, and for a small one-off job it's probably the better choice. Here, reviews alone took 39% to 46% of the output tokens on small commands. What that buys is a reviewer who didn't do the work, memory for each role across commands, and an audit log. No comparison of results has been measured yet.
186
+
187
+ **How is it different from a flat swarm?** In a swarm, agents work side by side. Here work flows through a hierarchy, each piece has one owner, and a role can't see another role's memory or assignments, because its server won't show them. We haven't measured whether that gives better results. That benchmark is on the roadmap.
188
+
189
+ **What does a command cost?** On a Claude plan, it comes out of your plan's usage. At API list prices, the small commands we measured came to about $0.13 to $0.66, and the largest to $1.67. Rework makes it cost more. See [the tables](#what-it-costs). A command stops and asks you at 40,000 tokens if small, or 150,000 if large.
190
+
191
+ **Which models work?** It has been proven on `claude-sonnet-5-5` and `claude-haiku-5-5`, through Claude Code. On `deepseek-v4.1-flash-1017`, the same small command finished in one run of three. No other model has been tried. See [what was tested](#what-was-tested-and-how).
192
+
193
+ ## Experimental
194
+
195
+ Available, not promised. These exist and have tests, and they aren't what this release stands behind.
196
+
197
+ **The API runner,** for any OpenAI-compatible model: `deepseek-v4.1-flash-1017` is the only one tried, and the table above shows how that went. Grok and others should work the same way, and haven't been tried. Copy `.env.example` to `.env`, set `TRYPRO_LLM_BASE_URL`, `TRYPRO_LLM_API_KEY`, `TRYPRO_LLM_MODEL`, and `GITHUB_TOKEN`, and **check the model first:**
198
+
199
+ ```bash
200
+ trypro check-model
201
+ trypro init "a YouTube Shorts content company"
202
+ trypro run "Make 5 Shorts about AI tools for this week"
203
+ trypro run --queue "<a command>" # Then: trypro next
204
+ trypro resume <run-id> # Continue unfinished work
205
+ ```
206
+
207
+ `check-model` tests tool calling, strict structures, following a brief, replying in the command's language, and treating data as data. Then it has the model finish one small real command, through every review, within 40,000 tokens. It reports **suitable**, **usable with caveats**, or **not recommended**, and it can spend up to about 45,000 tokens. It's one run, so a different run can go differently.
208
+
209
+ **A look with no model at all.** A scripted model stands in, so this shows how the company works, not what a model would write:
210
+
211
+ ```bash
212
+ trypro init
213
+ trypro run --dry-run "Build a health check endpoint"
214
+ trypro check-model --dry-run
215
+ ```
216
+
217
+ **Other MCP clients,** such as Cursor and Codex: the server should work with them, and none has been tried. [Setting one up, and what it can't guarantee](https://github.com/goranai/try-professional/blob/main/packages/try-professional/src/try_professional/adapters/mcp/README.md).
218
+
219
+ ## Roadmap
220
+
221
+ - **More runtimes.** Hermes and others. There's no Hermes adapter yet, and `skill-customs`' guide for it hasn't been tried on a real install. "Add support for <runtime>" issues are open to anyone.
222
+ - **Quality on cheap models,** through self-refinement.
223
+ - **A three-way benchmark** against a flat swarm and a single agent.
224
+ - **Dreaming,** where a company consolidates what it learned.
225
+
226
+ ## Learn more
227
+
228
+ - [Architecture](https://github.com/goranai/try-professional/blob/main/docs/architecture.md)
229
+ - [The MCP adapter, and what it can and can't guarantee](https://github.com/goranai/try-professional/blob/main/packages/try-professional/src/try_professional/adapters/mcp/README.md)
230
+ - [Example: a YouTube Shorts studio](https://github.com/goranai/try-professional/blob/main/examples/youtube-shorts-studio/README.md), on the experimental API runner
231
+ - [Contributing](https://github.com/goranai/try-professional/blob/main/CONTRIBUTING.md), and [security](https://github.com/goranai/try-professional/blob/main/SECURITY.md)
232
+
233
+ MIT licensed. No telemetry. Keys come from environment variables, and are never logged.
@@ -0,0 +1,53 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.25"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "try-professional"
7
+ dynamic = ["version"]
8
+ description = "Turn Claude Code into a permanent AI company: a hierarchy of agents with roles, memory and vetted skills, and review gates enforced by code. Multi-agent orchestration via MCP."
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.10"
12
+ keywords = ["ai-agents", "multi-agent", "agent-orchestration", "hierarchical-agents", "claude-code", "claude", "mcp", "model-context-protocol", "agent-skills", "agent-memory", "llm"]
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "Environment :: Console",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python :: 3.10",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
24
+ "Topic :: Software Development :: Libraries :: Application Frameworks",
25
+ ]
26
+ dependencies = [
27
+ "httpx>=0.27,<1",
28
+ "jsonschema>=4.21,<5",
29
+ "mnemosyne-memory[embeddings]>=4,<5",
30
+ "numpy>=1.26,<3",
31
+ "pydantic>=2.7,<3",
32
+ "pyyaml>=6,<7",
33
+ "skill-customs>=0.1.0,<0.2",
34
+ ]
35
+
36
+ [project.optional-dependencies]
37
+ anthropic = ["anthropic>=2,<3"]
38
+ mcp = ["mcp>=2,<3"]
39
+
40
+ [project.urls]
41
+ Homepage = "https://github.com/goranai/try-professional"
42
+ Repository = "https://github.com/goranai/try-professional"
43
+ Documentation = "https://github.com/goranai/try-professional#quickstart"
44
+ Issues = "https://github.com/goranai/try-professional/issues"
45
+
46
+ [project.scripts]
47
+ trypro = "try_professional.cli:main"
48
+
49
+ [tool.hatch.version]
50
+ path = "src/try_professional/__init__.py"
51
+
52
+ [tool.hatch.build.targets.wheel]
53
+ packages = ["src/try_professional"]
@@ -0,0 +1,3 @@
1
+ """Try Professional: a structured company of LLM agents."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,38 @@
1
+ ---
2
+ playbook: ceo
3
+ version: 2
4
+ ---
5
+
6
+ # CEO playbook
7
+
8
+ How the root role runs every command, for any business. Only the current step's section reaches the model, so each one stays short.
9
+
10
+ ## intake
11
+
12
+ Understand the command first.
13
+ 1. Keep original_goal exactly as written. Restate it in one sentence. Record its language as user_language (a BCP 47 tag).
14
+ 2. Record constraints, and success criteria someone could check. Don't invent requirements.
15
+ 3. Set size. small: one department and one or two roles can do it. large: anything more. When unsure, choose large.
16
+ 4. If small, set route_department, and route_role if one role can do it alone, exactly as listed below.
17
+ Review happens automatically at either size.
18
+
19
+ ## plan
20
+
21
+ Use the fewest work packages that meet the command: one is often right.
22
+ 1. Activate only the departments it needs, with a reason for each.
23
+ 2. Give each package one owning department, checkable acceptance criteria, and its dependencies.
24
+ 3. Set token_budget: about 15000 for simple work, 40000 for hard work, within the run's limit.
25
+ 4. If it asks for a document or a plan, the work is to write it, not to build what it describes.
26
+ Don't plan review steps: QA and legal review happens automatically.
27
+
28
+ ## escalation
29
+
30
+ An item was escalated to you. Resume it with clear guidance, amend the plan, or abandon it. If it needs something this company can't reach, such as the web, don't wait for that: resume it, and have the work done without it, with those claims marked unverified for a person to check. Ask the person only if the decision is truly theirs, or no useful version of the work exists.
31
+
32
+ ## integrate
33
+
34
+ Assemble one deliverable from the approved work. Report on every success criterion, using its exact wording, with evidence. Say plainly what wasn't done. Write summary_in_user_language in the user's language, for someone who didn't see the work.
35
+
36
+ ## retrospective
37
+
38
+ Propose what the whole company should remember: rules, major decisions, and lessons across departments. A person approves each one, so propose few, and be specific. Leave out what only one team needs.