agentify-toolkit 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 (33) hide show
  1. agentify_toolkit-0.1.0/LICENSE +100 -0
  2. agentify_toolkit-0.1.0/NOTICE +6 -0
  3. agentify_toolkit-0.1.0/PKG-INFO +266 -0
  4. agentify_toolkit-0.1.0/README.md +136 -0
  5. agentify_toolkit-0.1.0/pyproject.toml +46 -0
  6. agentify_toolkit-0.1.0/setup.cfg +4 -0
  7. agentify_toolkit-0.1.0/src/agentify/__init__.py +21 -0
  8. agentify_toolkit-0.1.0/src/agentify/agentify.py +61 -0
  9. agentify_toolkit-0.1.0/src/agentify/agents.py +37 -0
  10. agentify_toolkit-0.1.0/src/agentify/cli.py +291 -0
  11. agentify_toolkit-0.1.0/src/agentify/cli_config.py +100 -0
  12. agentify_toolkit-0.1.0/src/agentify/cli_ui.py +44 -0
  13. agentify_toolkit-0.1.0/src/agentify/providers/__init__.py +5 -0
  14. agentify_toolkit-0.1.0/src/agentify/providers/anthropic.py +15 -0
  15. agentify_toolkit-0.1.0/src/agentify/providers/bedrock.py +30 -0
  16. agentify_toolkit-0.1.0/src/agentify/providers/google.py +10 -0
  17. agentify_toolkit-0.1.0/src/agentify/providers/openai.py +11 -0
  18. agentify_toolkit-0.1.0/src/agentify/providers/x.py +12 -0
  19. agentify_toolkit-0.1.0/src/agentify/runtime_client.py +23 -0
  20. agentify_toolkit-0.1.0/src/agentify/specs.py +19 -0
  21. agentify_toolkit-0.1.0/src/agentify/ui/basic-chat.css +230 -0
  22. agentify_toolkit-0.1.0/src/agentify/ui/chat.css +230 -0
  23. agentify_toolkit-0.1.0/src/agentify/ui/chat.html +107 -0
  24. agentify_toolkit-0.1.0/src/agentify/ui/htmx.min.js +1 -0
  25. agentify_toolkit-0.1.0/src/agentify/ui/retro-chat.css +353 -0
  26. agentify_toolkit-0.1.0/src/agentify/web.py +60 -0
  27. agentify_toolkit-0.1.0/src/agentify_toolkit.egg-info/PKG-INFO +266 -0
  28. agentify_toolkit-0.1.0/src/agentify_toolkit.egg-info/SOURCES.txt +31 -0
  29. agentify_toolkit-0.1.0/src/agentify_toolkit.egg-info/dependency_links.txt +1 -0
  30. agentify_toolkit-0.1.0/src/agentify_toolkit.egg-info/entry_points.txt +2 -0
  31. agentify_toolkit-0.1.0/src/agentify_toolkit.egg-info/requires.txt +11 -0
  32. agentify_toolkit-0.1.0/src/agentify_toolkit.egg-info/top_level.txt +1 -0
  33. agentify_toolkit-0.1.0/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,266 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentify_toolkit
3
+ Version: 0.1.0
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.105
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
+ ### 1. Create an agent YAML
176
+
177
+ ```yaml
178
+ name: claude
179
+ description: AI Engineer
180
+ version: 0.1.0
181
+ model:
182
+ provider: anthropic
183
+ id: claude-sonnet-4-5
184
+ api_key_env: ANTHROPIC_API_KEY
185
+ role: |
186
+ You are an AI Security Engineer.
187
+ Provide concise, practical answers with examples.
188
+ ```
189
+
190
+ ### 2 .Run a single agent
191
+
192
+ ```bash
193
+ agentify run examples/agent.yaml
194
+ ```
195
+
196
+ > **Overriding Model** - you can pass a provider and model parameter to override the provider and model in the YAML file
197
+
198
+ ```bash
199
+ agentify run examples/agent.yaml --provider=openai --model=gpt-5-nano
200
+ ```
201
+
202
+ ### 3. Run agents interactively from a folder
203
+
204
+ ```bash
205
+ agentify run examples/agents
206
+ ```
207
+
208
+ ### 4. List agents interactively
209
+
210
+ ```bash
211
+ agentify list agents
212
+ ```
213
+
214
+ ## Programmatic Usage
215
+
216
+ Install agentify with `pip install agentify` and then import.
217
+
218
+ ```python
219
+ from agentify import Agent
220
+
221
+ def main():
222
+
223
+ agent = Agent(
224
+ name="Grok",
225
+ description="X's Grok Agent",
226
+ provider="x",
227
+ model_id="grok-4",
228
+ role="You are an AI Security Architect specialising in X AI Grok models"
229
+ )
230
+
231
+ response = agent.run("Which AI LLM is the best in 1 sentence ?")
232
+ print(response)
233
+
234
+ if __name__ == "__main__":
235
+ main()
236
+ ```
237
+
238
+ ## CLI Reference
239
+
240
+ | Command | Example |
241
+ | ------------------------------ | --------------------------- |
242
+ | Run agent from YAML | `agentify run <agent.yaml>` |
243
+ | Run all YAML Agents in folder | `agentify run <folder>` |
244
+ | List all YAML Agents in folder | `agentify list <folder>` |
245
+
246
+ ## Adding LLM API Keys
247
+
248
+ To use the LLM Model providers, you will need an API key and they will need to be made available in your environment.
249
+
250
+ Implemented providers:
251
+
252
+ | Provider | Instruction | Link |
253
+ | --------- | ---------------------------------------------- | ------------------------------------ |
254
+ | OpenAI | `export OPENAI_API_KEY="your_api_key_here"` | https://platform.openai.com/api-keys |
255
+ | Anthropic | `export ANTHROPIC_API_KEY="your_api_key_here"` | |
256
+ | Gemini | `export GEMINI_API_KEY="your_api_key_here"` | |
257
+ | Bedrock | `export AWS_BEARER_TOKEN_BEDROCK` | |
258
+ | GROK | `export XAI_API_KEY="your_api_key_here"` | |
259
+
260
+ > For Windows:
261
+ > $env:<Provider\>\_API_KEY="YOUR_API_KEY"
262
+
263
+ ## License
264
+
265
+ Agentify is licensed under the Apache License, Version 2.0.
266
+ See LICENSE for details.
@@ -0,0 +1,136 @@
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
+ ### 1. Create an agent YAML
46
+
47
+ ```yaml
48
+ name: claude
49
+ description: AI Engineer
50
+ version: 0.1.0
51
+ model:
52
+ provider: anthropic
53
+ id: claude-sonnet-4-5
54
+ api_key_env: ANTHROPIC_API_KEY
55
+ role: |
56
+ You are an AI Security Engineer.
57
+ Provide concise, practical answers with examples.
58
+ ```
59
+
60
+ ### 2 .Run a single agent
61
+
62
+ ```bash
63
+ agentify run examples/agent.yaml
64
+ ```
65
+
66
+ > **Overriding Model** - you can pass a provider and model parameter to override the provider and model in the YAML file
67
+
68
+ ```bash
69
+ agentify run examples/agent.yaml --provider=openai --model=gpt-5-nano
70
+ ```
71
+
72
+ ### 3. Run agents interactively from a folder
73
+
74
+ ```bash
75
+ agentify run examples/agents
76
+ ```
77
+
78
+ ### 4. List agents interactively
79
+
80
+ ```bash
81
+ agentify list agents
82
+ ```
83
+
84
+ ## Programmatic Usage
85
+
86
+ Install agentify with `pip install agentify` and then import.
87
+
88
+ ```python
89
+ from agentify import Agent
90
+
91
+ def main():
92
+
93
+ agent = Agent(
94
+ name="Grok",
95
+ description="X's Grok Agent",
96
+ provider="x",
97
+ model_id="grok-4",
98
+ role="You are an AI Security Architect specialising in X AI Grok models"
99
+ )
100
+
101
+ response = agent.run("Which AI LLM is the best in 1 sentence ?")
102
+ print(response)
103
+
104
+ if __name__ == "__main__":
105
+ main()
106
+ ```
107
+
108
+ ## CLI Reference
109
+
110
+ | Command | Example |
111
+ | ------------------------------ | --------------------------- |
112
+ | Run agent from YAML | `agentify run <agent.yaml>` |
113
+ | Run all YAML Agents in folder | `agentify run <folder>` |
114
+ | List all YAML Agents in folder | `agentify list <folder>` |
115
+
116
+ ## Adding LLM API Keys
117
+
118
+ To use the LLM Model providers, you will need an API key and they will need to be made available in your environment.
119
+
120
+ Implemented providers:
121
+
122
+ | Provider | Instruction | Link |
123
+ | --------- | ---------------------------------------------- | ------------------------------------ |
124
+ | OpenAI | `export OPENAI_API_KEY="your_api_key_here"` | https://platform.openai.com/api-keys |
125
+ | Anthropic | `export ANTHROPIC_API_KEY="your_api_key_here"` | |
126
+ | Gemini | `export GEMINI_API_KEY="your_api_key_here"` | |
127
+ | Bedrock | `export AWS_BEARER_TOKEN_BEDROCK` | |
128
+ | GROK | `export XAI_API_KEY="your_api_key_here"` | |
129
+
130
+ > For Windows:
131
+ > $env:<Provider\>\_API_KEY="YOUR_API_KEY"
132
+
133
+ ## License
134
+
135
+ Agentify is licensed under the Apache License, Version 2.0.
136
+ 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.1.0"
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.105",
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,21 @@
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
+ ]
@@ -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"))
@@ -0,0 +1,37 @@
1
+ # Copyright 2026 Backplane Software
2
+ # Licensed under the Apache License, Version 2.0
3
+
4
+ from agentify import Agent
5
+ import os
6
+
7
+ def create_agents(specs: list) -> dict[str, Agent]:
8
+ agents = {}
9
+ for spec in specs:
10
+ agent = create_agent(spec)
11
+ agents[agent.name] = agent
12
+ return agents
13
+
14
+ def create_agent(spec: dict, provider: str = None, model: str = None) -> Agent:
15
+ """
16
+ Create an Agent from a YAML/spec dictionary, optionally overriding model or provider.
17
+ """
18
+ name = spec.get("name")
19
+ description = spec.get("description")
20
+ version = spec.get("version")
21
+ role = spec.get("role")
22
+
23
+ model_spec = spec.get("model", {})
24
+ model_id = model or model_spec.get("id")
25
+ provider = provider or model_spec.get("provider")
26
+ api_key_env = model_spec.get("api_key_env")
27
+
28
+ if api_key_env:
29
+ api_key = os.getenv(api_key_env)
30
+ # if not api_key:
31
+ # raise EnvironmentError(
32
+ # f"Environment variables '{api_key_env}' is not set"
33
+ # )
34
+
35
+ agent = Agent(name=name, provider=provider, model_id=model_id, role=role, description=description, version=version)
36
+
37
+ return agent