agentify-toolkit 0.2.1__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 (33) hide show
  1. agentify_toolkit-0.2.1/LICENSE +100 -0
  2. agentify_toolkit-0.2.1/NOTICE +6 -0
  3. agentify_toolkit-0.2.1/PKG-INFO +280 -0
  4. agentify_toolkit-0.2.1/README.md +150 -0
  5. agentify_toolkit-0.2.1/pyproject.toml +46 -0
  6. agentify_toolkit-0.2.1/setup.cfg +4 -0
  7. agentify_toolkit-0.2.1/src/agentify/__init__.py +41 -0
  8. agentify_toolkit-0.2.1/src/agentify/agentify.py +61 -0
  9. agentify_toolkit-0.2.1/src/agentify/agents.py +37 -0
  10. agentify_toolkit-0.2.1/src/agentify/cli.py +293 -0
  11. agentify_toolkit-0.2.1/src/agentify/cli_config.py +100 -0
  12. agentify_toolkit-0.2.1/src/agentify/cli_ui.py +44 -0
  13. agentify_toolkit-0.2.1/src/agentify/providers/__init__.py +5 -0
  14. agentify_toolkit-0.2.1/src/agentify/providers/anthropic.py +15 -0
  15. agentify_toolkit-0.2.1/src/agentify/providers/bedrock.py +30 -0
  16. agentify_toolkit-0.2.1/src/agentify/providers/google.py +10 -0
  17. agentify_toolkit-0.2.1/src/agentify/providers/openai.py +11 -0
  18. agentify_toolkit-0.2.1/src/agentify/providers/x.py +12 -0
  19. agentify_toolkit-0.2.1/src/agentify/runtime_client.py +23 -0
  20. agentify_toolkit-0.2.1/src/agentify/specs.py +19 -0
  21. agentify_toolkit-0.2.1/src/agentify/ui/basic-chat.css +230 -0
  22. agentify_toolkit-0.2.1/src/agentify/ui/chat.css +230 -0
  23. agentify_toolkit-0.2.1/src/agentify/ui/chat.html +107 -0
  24. agentify_toolkit-0.2.1/src/agentify/ui/htmx.min.js +1 -0
  25. agentify_toolkit-0.2.1/src/agentify/ui/retro-chat.css +353 -0
  26. agentify_toolkit-0.2.1/src/agentify/web.py +60 -0
  27. agentify_toolkit-0.2.1/src/agentify_toolkit.egg-info/PKG-INFO +280 -0
  28. agentify_toolkit-0.2.1/src/agentify_toolkit.egg-info/SOURCES.txt +31 -0
  29. agentify_toolkit-0.2.1/src/agentify_toolkit.egg-info/dependency_links.txt +1 -0
  30. agentify_toolkit-0.2.1/src/agentify_toolkit.egg-info/entry_points.txt +2 -0
  31. agentify_toolkit-0.2.1/src/agentify_toolkit.egg-info/requires.txt +11 -0
  32. agentify_toolkit-0.2.1/src/agentify_toolkit.egg-info/top_level.txt +1 -0
  33. agentify_toolkit-0.2.1/tests/test_agent.py +19 -0
@@ -0,0 +1,100 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+ "License" shall mean the terms and conditions for use, reproduction,
9
+ and distribution as defined by Sections 1 through 9 of this document.
10
+
11
+ "Licensor" shall mean the copyright owner or entity authorized by
12
+ the copyright owner that is granting the License.
13
+
14
+ "Legal Entity" shall mean the union of the acting entity and all
15
+ other entities that control, are controlled by, or are under common
16
+ control with that entity.
17
+
18
+ "You" (or "Your") shall mean an individual or Legal Entity
19
+ exercising permissions granted by this License.
20
+
21
+ "Source" form shall mean the preferred form for making modifications,
22
+ including but not limited to software source code, documentation
23
+ source, and configuration files.
24
+
25
+ "Object" form shall mean any form resulting from mechanical
26
+ transformation or translation of a Source form, including but
27
+ not limited to compiled object code, generated documentation,
28
+ and conversions to other media types.
29
+
30
+ "Work" shall mean the work of authorship, whether in Source or
31
+ Object form, made available under the License, as indicated by a
32
+ copyright notice that is included in or attached to the work.
33
+
34
+ "Derivative Works" shall mean any work, whether in Source or Object
35
+ form, that is based on (or derived from) the Work and for which the
36
+ editorial revisions, annotations, elaborations, or other modifications
37
+ represent, as a whole, an original work of authorship.
38
+
39
+ "Contribution" shall mean any work of authorship, including
40
+ the original version of the Work and any modifications or additions
41
+ to that Work or Derivative Works thereof, that is intentionally
42
+ submitted to Licensor for inclusion in the Work by the copyright owner
43
+ or by an individual or Legal Entity authorized to submit on behalf of
44
+ the copyright owner.
45
+
46
+ "Contributor" shall mean Licensor and any individual or Legal Entity
47
+ on behalf of whom a Contribution has been received by Licensor and
48
+ subsequently incorporated within the Work.
49
+
50
+ 2. Grant of Copyright License.
51
+ Subject to the terms and conditions of this License, each Contributor
52
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
53
+ royalty-free, irrevocable copyright license to reproduce, prepare
54
+ Derivative Works of, publicly display, publicly perform, sublicense,
55
+ and distribute the Work and such Derivative Works in Source or Object
56
+ form.
57
+
58
+ 3. Grant of Patent License.
59
+ Subject to the terms and conditions of this License, each Contributor
60
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
61
+ royalty-free, irrevocable patent license to make, have made, use,
62
+ offer to sell, sell, import, and otherwise transfer the Work.
63
+
64
+ 4. Redistribution.
65
+ You may reproduce and distribute copies of the Work or Derivative
66
+ Works thereof in any medium, with or without modifications, provided
67
+ that You meet the following conditions:
68
+
69
+ (a) You must give any other recipients of the Work or
70
+ Derivative Works a copy of this License; and
71
+
72
+ (b) You must cause any modified files to carry prominent notices
73
+ stating that You changed the files; and
74
+
75
+ (c) You must retain, in the Source form of any Derivative Works,
76
+ all copyright, patent, trademark, and attribution notices.
77
+
78
+ 5. Submission of Contributions.
79
+ Unless You explicitly state otherwise, any Contribution intentionally
80
+ submitted for inclusion in the Work shall be under the terms and
81
+ conditions of this License.
82
+
83
+ 6. Trademarks.
84
+ This License does not grant permission to use the trade names,
85
+ trademarks, service marks, or product names of the Licensor.
86
+
87
+ 7. Disclaimer of Warranty.
88
+ Unless required by applicable law or agreed to in writing, Licensor
89
+ provides the Work on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
90
+ OF ANY KIND.
91
+
92
+ 8. Limitation of Liability.
93
+ In no event shall any Contributor be liable for any damages arising
94
+ from the use of the Work.
95
+
96
+ 9. Accepting Warranty or Additional Liability.
97
+ While redistributing the Work, You may choose to offer support or
98
+ warranty obligations on Your own behalf.
99
+
100
+ END OF TERMS AND CONDITIONS
@@ -0,0 +1,6 @@
1
+ Agentify
2
+
3
+ Copyright 2026 Backplane
4
+
5
+ This product includes software developed by contributors
6
+ to the Agentify project.
@@ -0,0 +1,280 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentify_toolkit
3
+ Version: 0.2.1
4
+ Summary: Declarative AI toolkit
5
+ Author-email: Lewis Sheridan <lewis@backplane.dev>
6
+ License: Apache License
7
+ Version 2.0, January 2004
8
+ http://www.apache.org/licenses/
9
+
10
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
11
+
12
+ 1. Definitions.
13
+ "License" shall mean the terms and conditions for use, reproduction,
14
+ and distribution as defined by Sections 1 through 9 of this document.
15
+
16
+ "Licensor" shall mean the copyright owner or entity authorized by
17
+ the copyright owner that is granting the License.
18
+
19
+ "Legal Entity" shall mean the union of the acting entity and all
20
+ other entities that control, are controlled by, or are under common
21
+ control with that entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work.
38
+
39
+ "Derivative Works" shall mean any work, whether in Source or Object
40
+ form, that is based on (or derived from) the Work and for which the
41
+ editorial revisions, annotations, elaborations, or other modifications
42
+ represent, as a whole, an original work of authorship.
43
+
44
+ "Contribution" shall mean any work of authorship, including
45
+ the original version of the Work and any modifications or additions
46
+ to that Work or Derivative Works thereof, that is intentionally
47
+ submitted to Licensor for inclusion in the Work by the copyright owner
48
+ or by an individual or Legal Entity authorized to submit on behalf of
49
+ the copyright owner.
50
+
51
+ "Contributor" shall mean Licensor and any individual or Legal Entity
52
+ on behalf of whom a Contribution has been received by Licensor and
53
+ subsequently incorporated within the Work.
54
+
55
+ 2. Grant of Copyright License.
56
+ Subject to the terms and conditions of this License, each Contributor
57
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
58
+ royalty-free, irrevocable copyright license to reproduce, prepare
59
+ Derivative Works of, publicly display, publicly perform, sublicense,
60
+ and distribute the Work and such Derivative Works in Source or Object
61
+ form.
62
+
63
+ 3. Grant of Patent License.
64
+ Subject to the terms and conditions of this License, each Contributor
65
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
66
+ royalty-free, irrevocable patent license to make, have made, use,
67
+ offer to sell, sell, import, and otherwise transfer the Work.
68
+
69
+ 4. Redistribution.
70
+ You may reproduce and distribute copies of the Work or Derivative
71
+ Works thereof in any medium, with or without modifications, provided
72
+ that You meet the following conditions:
73
+
74
+ (a) You must give any other recipients of the Work or
75
+ Derivative Works a copy of this License; and
76
+
77
+ (b) You must cause any modified files to carry prominent notices
78
+ stating that You changed the files; and
79
+
80
+ (c) You must retain, in the Source form of any Derivative Works,
81
+ all copyright, patent, trademark, and attribution notices.
82
+
83
+ 5. Submission of Contributions.
84
+ Unless You explicitly state otherwise, any Contribution intentionally
85
+ submitted for inclusion in the Work shall be under the terms and
86
+ conditions of this License.
87
+
88
+ 6. Trademarks.
89
+ This License does not grant permission to use the trade names,
90
+ trademarks, service marks, or product names of the Licensor.
91
+
92
+ 7. Disclaimer of Warranty.
93
+ Unless required by applicable law or agreed to in writing, Licensor
94
+ provides the Work on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
95
+ OF ANY KIND.
96
+
97
+ 8. Limitation of Liability.
98
+ In no event shall any Contributor be liable for any damages arising
99
+ from the use of the Work.
100
+
101
+ 9. Accepting Warranty or Additional Liability.
102
+ While redistributing the Work, You may choose to offer support or
103
+ warranty obligations on Your own behalf.
104
+
105
+ END OF TERMS AND CONDITIONS
106
+
107
+ Project-URL: Homepage, https://github.com/backplane-cloud/agentify-toolkit
108
+ Project-URL: Issues, https://github.com/backplane-cloud/agentify-toolkit/issues
109
+ Keywords: ai,agents,llm,openai,anthropic,bedrock
110
+ Classifier: License :: OSI Approved :: Apache Software License
111
+ Classifier: Programming Language :: Python :: 3.10
112
+ Classifier: Development Status :: 3 - Alpha
113
+ Classifier: Intended Audience :: Developers
114
+ Requires-Python: >=3.10
115
+ Description-Content-Type: text/markdown
116
+ License-File: LICENSE
117
+ License-File: NOTICE
118
+ Requires-Dist: pyyaml>=6.0
119
+ Requires-Dist: rich>=13.0
120
+ Requires-Dist: click>=8.1
121
+ Requires-Dist: openai>=1.0
122
+ Requires-Dist: anthropic>=0.25
123
+ Requires-Dist: boto3>=1.34
124
+ Requires-Dist: xai_sdk>=1.5.0
125
+ Requires-Dist: google-genai>=0.8
126
+ Requires-Dist: fastapi>=0.128.0
127
+ Requires-Dist: uvicorn>=0.26
128
+ Requires-Dist: python-multipart>=0.0.6
129
+ Dynamic: license-file
130
+
131
+ # Agent Building Toolkit - Agentify 🤖
132
+
133
+ [![PyPI](https://img.shields.io/pypi/v/agentify)](https://pypi.org/project/agentify-toolkit/)
134
+ [![Python Version](https://img.shields.io/pypi/pyversions/agentify)](https://www.python.org/)
135
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)
136
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/backplane-cloud/agentify-toolkit/blob/main/examples/notebooks/Agentify_Developer_Quickstart.ipynb)
137
+
138
+ > Agentify is a lightweight, declarative-first Library for building **AI agents** in Python
139
+
140
+ ## KeyFeatures
141
+
142
+ - Declarative agent definitions via YAML.
143
+ - Multi-LLM support: OpenAI, Anthropic, and more.
144
+ - Interactive CLI with TUI menu for exploring agents.
145
+ - Programmatic agent creation and execution for custom workflows.
146
+ - Lightweight, minimal dependencies: Click + Rich + PyYAML.
147
+
148
+ ## 🚀 Getting Started
149
+
150
+ Prefer a hands-on walkthrough?
151
+
152
+ - 📘 [Agentify Developer Quickstart (Jupyter)](examples/notebooks/Agentify_Developer_Quickstart.ipynb)
153
+ - 📄 [Agentify YAML Deep Dive](examples/notebooks/Agentify_YAML_Deep_Dive.ipynb)
154
+
155
+ ## How it works
156
+
157
+ Define your agents in simple YAML files or programmatically, and run them using an interactive CLI. Agentify abstracts LLM provider integrations and provides a simplified developer experience.
158
+
159
+ ## Installation
160
+
161
+ ```bash
162
+ pip install agentify-toolkit
163
+ ```
164
+
165
+ Or install from source:
166
+
167
+ ```bash
168
+ git clone https://github.com/backplane-software/agentify.git
169
+ cd agentify
170
+ pip install .
171
+ ```
172
+
173
+ ## Quick Start
174
+
175
+ > Note: To use Agentify you will require an API KEY from your AI Model Provider.
176
+
177
+ To add the API KEY to your environment:
178
+
179
+ ```bash
180
+ agentify providers add <provider> # e.g. anthropic, xai, google, openai
181
+ ```
182
+
183
+ Then, you can validate:
184
+
185
+ ```bash
186
+ agentify providers list
187
+ ```
188
+
189
+ ### 1. Create an agent YAML
190
+
191
+ ```yaml
192
+ name: claude
193
+ description: AI Engineer
194
+ version: 0.1.0
195
+ model:
196
+ provider: anthropic
197
+ id: claude-sonnet-4-5
198
+ api_key_env: ANTHROPIC_API_KEY
199
+ role: |
200
+ You are an AI Security Engineer.
201
+ Provide concise, practical answers with examples.
202
+ ```
203
+
204
+ ### 2 .Run a single agent
205
+
206
+ ```bash
207
+ agentify run examples/agent.yaml
208
+ ```
209
+
210
+ > **Overriding Model** - you can pass a provider and model parameter to override the provider and model in the YAML file
211
+
212
+ ```bash
213
+ agentify run examples/agent.yaml --provider=openai --model=gpt-5-nano
214
+ ```
215
+
216
+ ### 3. Run agents interactively from a folder
217
+
218
+ ```bash
219
+ agentify run examples/agents
220
+ ```
221
+
222
+ ### 4. List agents interactively
223
+
224
+ ```bash
225
+ agentify list agents
226
+ ```
227
+
228
+ ## Programmatic Usage
229
+
230
+ Install agentify with `pip install agentify` and then import.
231
+
232
+ ```python
233
+ from agentify import Agent
234
+
235
+ def main():
236
+
237
+ agent = Agent(
238
+ name="Grok",
239
+ description="X's Grok Agent",
240
+ provider="x",
241
+ model_id="grok-4",
242
+ role="You are an AI Security Architect specialising in X AI Grok models"
243
+ )
244
+
245
+ response = agent.run("Which AI LLM is the best in 1 sentence ?")
246
+ print(response)
247
+
248
+ if __name__ == "__main__":
249
+ main()
250
+ ```
251
+
252
+ ## CLI Reference
253
+
254
+ | Command | Example |
255
+ | ------------------------------ | --------------------------- |
256
+ | Run agent from YAML | `agentify run <agent.yaml>` |
257
+ | Run all YAML Agents in folder | `agentify run <folder>` |
258
+ | List all YAML Agents in folder | `agentify list <folder>` |
259
+
260
+ ## Adding LLM API Keys
261
+
262
+ To use the LLM Model providers, you will need an API key and they will need to be made available in your environment.
263
+
264
+ Implemented providers:
265
+
266
+ | Provider | Instruction |
267
+ | --------- | ---------------------------------------------- |
268
+ | OpenAI | `export OPENAI_API_KEY="your_api_key_here"` |
269
+ | Anthropic | `export ANTHROPIC_API_KEY="your_api_key_here"` |
270
+ | Gemini | `export GEMINI_API_KEY="your_api_key_here"` |
271
+ | GROK | `export XAI_API_KEY="your_api_key_here"` |
272
+ | Bedrock | `export AWS_BEARER_TOKEN_BEDROCK` |
273
+
274
+ > For Windows:
275
+ > $env:<Provider\>\_API_KEY="YOUR_API_KEY"
276
+
277
+ ## License
278
+
279
+ Agentify is licensed under the Apache License, Version 2.0.
280
+ See LICENSE for details.
@@ -0,0 +1,150 @@
1
+ # Agent Building Toolkit - Agentify 🤖
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/agentify)](https://pypi.org/project/agentify-toolkit/)
4
+ [![Python Version](https://img.shields.io/pypi/pyversions/agentify)](https://www.python.org/)
5
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)
6
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/backplane-cloud/agentify-toolkit/blob/main/examples/notebooks/Agentify_Developer_Quickstart.ipynb)
7
+
8
+ > Agentify is a lightweight, declarative-first Library for building **AI agents** in Python
9
+
10
+ ## KeyFeatures
11
+
12
+ - Declarative agent definitions via YAML.
13
+ - Multi-LLM support: OpenAI, Anthropic, and more.
14
+ - Interactive CLI with TUI menu for exploring agents.
15
+ - Programmatic agent creation and execution for custom workflows.
16
+ - Lightweight, minimal dependencies: Click + Rich + PyYAML.
17
+
18
+ ## 🚀 Getting Started
19
+
20
+ Prefer a hands-on walkthrough?
21
+
22
+ - 📘 [Agentify Developer Quickstart (Jupyter)](examples/notebooks/Agentify_Developer_Quickstart.ipynb)
23
+ - 📄 [Agentify YAML Deep Dive](examples/notebooks/Agentify_YAML_Deep_Dive.ipynb)
24
+
25
+ ## How it works
26
+
27
+ Define your agents in simple YAML files or programmatically, and run them using an interactive CLI. Agentify abstracts LLM provider integrations and provides a simplified developer experience.
28
+
29
+ ## Installation
30
+
31
+ ```bash
32
+ pip install agentify-toolkit
33
+ ```
34
+
35
+ Or install from source:
36
+
37
+ ```bash
38
+ git clone https://github.com/backplane-software/agentify.git
39
+ cd agentify
40
+ pip install .
41
+ ```
42
+
43
+ ## Quick Start
44
+
45
+ > Note: To use Agentify you will require an API KEY from your AI Model Provider.
46
+
47
+ To add the API KEY to your environment:
48
+
49
+ ```bash
50
+ agentify providers add <provider> # e.g. anthropic, xai, google, openai
51
+ ```
52
+
53
+ Then, you can validate:
54
+
55
+ ```bash
56
+ agentify providers list
57
+ ```
58
+
59
+ ### 1. Create an agent YAML
60
+
61
+ ```yaml
62
+ name: claude
63
+ description: AI Engineer
64
+ version: 0.1.0
65
+ model:
66
+ provider: anthropic
67
+ id: claude-sonnet-4-5
68
+ api_key_env: ANTHROPIC_API_KEY
69
+ role: |
70
+ You are an AI Security Engineer.
71
+ Provide concise, practical answers with examples.
72
+ ```
73
+
74
+ ### 2 .Run a single agent
75
+
76
+ ```bash
77
+ agentify run examples/agent.yaml
78
+ ```
79
+
80
+ > **Overriding Model** - you can pass a provider and model parameter to override the provider and model in the YAML file
81
+
82
+ ```bash
83
+ agentify run examples/agent.yaml --provider=openai --model=gpt-5-nano
84
+ ```
85
+
86
+ ### 3. Run agents interactively from a folder
87
+
88
+ ```bash
89
+ agentify run examples/agents
90
+ ```
91
+
92
+ ### 4. List agents interactively
93
+
94
+ ```bash
95
+ agentify list agents
96
+ ```
97
+
98
+ ## Programmatic Usage
99
+
100
+ Install agentify with `pip install agentify` and then import.
101
+
102
+ ```python
103
+ from agentify import Agent
104
+
105
+ def main():
106
+
107
+ agent = Agent(
108
+ name="Grok",
109
+ description="X's Grok Agent",
110
+ provider="x",
111
+ model_id="grok-4",
112
+ role="You are an AI Security Architect specialising in X AI Grok models"
113
+ )
114
+
115
+ response = agent.run("Which AI LLM is the best in 1 sentence ?")
116
+ print(response)
117
+
118
+ if __name__ == "__main__":
119
+ main()
120
+ ```
121
+
122
+ ## CLI Reference
123
+
124
+ | Command | Example |
125
+ | ------------------------------ | --------------------------- |
126
+ | Run agent from YAML | `agentify run <agent.yaml>` |
127
+ | Run all YAML Agents in folder | `agentify run <folder>` |
128
+ | List all YAML Agents in folder | `agentify list <folder>` |
129
+
130
+ ## Adding LLM API Keys
131
+
132
+ To use the LLM Model providers, you will need an API key and they will need to be made available in your environment.
133
+
134
+ Implemented providers:
135
+
136
+ | Provider | Instruction |
137
+ | --------- | ---------------------------------------------- |
138
+ | OpenAI | `export OPENAI_API_KEY="your_api_key_here"` |
139
+ | Anthropic | `export ANTHROPIC_API_KEY="your_api_key_here"` |
140
+ | Gemini | `export GEMINI_API_KEY="your_api_key_here"` |
141
+ | GROK | `export XAI_API_KEY="your_api_key_here"` |
142
+ | Bedrock | `export AWS_BEARER_TOKEN_BEDROCK` |
143
+
144
+ > For Windows:
145
+ > $env:<Provider\>\_API_KEY="YOUR_API_KEY"
146
+
147
+ ## License
148
+
149
+ Agentify is licensed under the Apache License, Version 2.0.
150
+ See LICENSE for details.
@@ -0,0 +1,46 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "agentify_toolkit"
7
+ version = "0.2.1"
8
+ description = "Declarative AI toolkit"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { file = "LICENSE" }
12
+ authors = [{ name = "Lewis Sheridan", email="lewis@backplane.dev" }]
13
+ keywords = ["ai", "agents", "llm", "openai", "anthropic", "bedrock"]
14
+
15
+ classifiers = [
16
+ "License :: OSI Approved :: Apache Software License",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Development Status :: 3 - Alpha",
19
+ "Intended Audience :: Developers",
20
+ ]
21
+
22
+ dependencies = [
23
+ "pyyaml>=6.0",
24
+ "rich>=13.0",
25
+ "click>=8.1",
26
+ "openai>=1.0",
27
+ "anthropic>=0.25",
28
+ "boto3>=1.34",
29
+ "xai_sdk>=1.5.0",
30
+ "google-genai>=0.8",
31
+ "fastapi>=0.128.0",
32
+ "uvicorn>=0.26",
33
+ "python-multipart>=0.0.6"
34
+
35
+ ]
36
+
37
+
38
+ [tool.setuptools.package-data]
39
+ agentify = ["ui/*.html", "ui/*.css", "ui/*.js"]
40
+
41
+ [project.scripts]
42
+ agentify = "agentify.cli:main"
43
+
44
+ [project.urls]
45
+ Homepage = "https://github.com/backplane-cloud/agentify-toolkit"
46
+ Issues = "https://github.com/backplane-cloud/agentify-toolkit/issues"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,41 @@
1
+ """
2
+ Copyright 2026 Backplane Software
3
+ Author: Lewis Sheridan
4
+ License: Apache License, Version 2.0
5
+ Description: Lightweight Python toolkit to build multi-model AI agents.
6
+ """
7
+
8
+ from .agentify import Agent
9
+ from .agents import create_agent, create_agents
10
+ from .specs import load_agent_specs
11
+ from .cli_ui import show_agent_menu
12
+ from .web import run_web_ui
13
+
14
+ __all__ = [
15
+ "Agent",
16
+ "load_agent_specs",
17
+ "create_agent",
18
+ "create_agents",
19
+ "show_agent_menu"
20
+ "run_web_ui"
21
+ ]
22
+
23
+ import os
24
+
25
+ try:
26
+ from importlib.metadata import version, PackageNotFoundError
27
+
28
+ try:
29
+ __version__ = version("agentify-toolkit")
30
+ except PackageNotFoundError:
31
+ # Fallback when running locally from src/ (not installed)
32
+ __version__ = "0.0.0-dev"
33
+ except ImportError:
34
+ # Python <3.8 fallback
35
+ __version__ = "0.0.0-dev"
36
+
37
+ # Optional: mark as dev if running in source directory
38
+ if os.path.exists(os.path.join(os.path.dirname(__file__), "..", "pyproject.toml")):
39
+ # Indicates a local dev environment
40
+ if not __version__.endswith("-dev"):
41
+ __version__ += "-dev"
@@ -0,0 +1,61 @@
1
+ """
2
+ Copyright 2026 Backplane Software
3
+ Licensed under the Apache License, Version 2.0
4
+ Author: Lewis Sheridan
5
+ Description: Agentify class to build multi-model AI Agents
6
+ """
7
+
8
+ from dataclasses import dataclass, field
9
+ from typing import Optional
10
+
11
+ from agentify.providers import run_openai, run_anthropic, run_google, run_bedrock, run_x
12
+ from rich.console import Console
13
+ from rich.panel import Panel
14
+ from rich.prompt import Prompt
15
+
16
+
17
+ @dataclass
18
+ class Agent:
19
+ name: str
20
+ description: str
21
+ provider: str
22
+ model_id: str
23
+ role: str
24
+ version: Optional[str] = field(default="0.0.0")
25
+
26
+
27
+ def get_model(self) -> str:
28
+ return self.model_id
29
+
30
+ def run(self, user_prompt: str) -> str:
31
+ match self.provider.lower():
32
+ case "openai":
33
+ return run_openai(self.model_id, user_prompt)
34
+ case "anthropic":
35
+ return run_anthropic(self.model_id, user_prompt)
36
+ case "google":
37
+ return run_google(self.model_id, user_prompt)
38
+ case "bedrock":
39
+ return run_bedrock(self.model_id, user_prompt)
40
+ case "x":
41
+ return run_x(self.model_id, user_prompt)
42
+ case _:
43
+ raise ValueError(f"Unsupported provider: {self.provider}")
44
+
45
+ def chat(agent: "Agent"):
46
+ console = Console()
47
+ console.print(Panel(
48
+ f"[bold cyan][/bold cyan]\n[bold cyan]{agent.name.upper()} [/bold cyan] [dim]{agent.version}[/dim]\nRole: {agent.description}\nUsing [yellow]{agent.model_id}[/yellow] by {agent.provider}",
49
+ border_style="cyan"
50
+ ))
51
+ while True:
52
+ prompt = Prompt.ask("\nEnter your prompt ('/exit' to quit)").strip()
53
+ if prompt.lower() in ["/exit", "quit"]:
54
+ console.print("[yellow]Exiting. Goodbye![/yellow]")
55
+ break
56
+
57
+
58
+ full_prompt = f"You must assume the role of {agent.role} when responding to this prompt:\n\n{prompt}"
59
+ with console.status(f"[blue]Sending prompt to model... {agent.name} is thinking...[/blue]", spinner="dots"):
60
+ response = agent.run(full_prompt)
61
+ console.print(Panel.fit(response, title="Agent Response", border_style="green"))