Kubiya SDK
Project description
Kubiya SDK
Kubiya SDK is a powerful Python library designed for creating, managing, and executing tools. It offers a flexible and intuitive interface, facilitating the integration of various tools and the efficient management of their execution.
Table of Contents
- Kubiya SDK
- Table of Contents
- Installation
- Key Concepts
- Quick Start
- Creating a Tool
- Example for basic tool
- Contributing
- License
Installation
To install the Kubiya SDK, use pip:
pip install kubiya-sdk
Key Concepts
- Teammates: AI-powered virtual assistants capable of managing technical operations tasks.
- Tools: Reusable functions that can be integrated into workflows and teammate agents.
- Steps: Individual units of work within a workflow.
- State: The data passed between steps in a workflow.
For setting up an API server for the SDK, you may install with additional server support:
pip install kubiya-sdk[server]
Quick Start
Creating a Tool
Here’s a basic example of how to create a new tool.
Use the Kubiya CLI init
command to generate a foundational template:
kubiya init
This creates a new folder with the following structure for the tool:
/my-new-amazing-tool
│
├── /tools
│ ├── /function_tool
│ │ ├── main.py # example for function tool
│ │
│ ├── /hello_world_tool # example for basic tool
│ │ ├── main.py
│ │ └── tool_def
│ └──
│
After editing your tools, you need to use the bundle command to scan and package your Kubiya tools within the project:
kubiya bundle
The command scans for tools in the project, verifies for any errors, and generates a kubiya_bundle.json
file in the
root folder. An example output:
Python Version: 3.11.10
Tools Discovered: 2
Tools Summary
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━┓
┃ Tool Name ┃ Args ┃ Env Vars ┃ Secrets ┃ Files ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━┩
│ test_123 │ 3 │ 0 │ 0 │ 1 │
│ say_hello │ 1 │ 0 │ 0 │ 1 │
└────────────────────────────────┴──────┴──────────┴─────────┴───────┘
No Errors
You can now create a new resource via https://kubiya.ai and integrate it with your teammate agent.
Examples
Example for basic tool
Simple main.py file for a tool that prints hello {name}!
def hello_world(name: str):
print(f"Hello, {name}!")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Print hello {name}!")
parser.add_argument("name", help="Name to say hello to")
# Parse command-line arguments
args = parser.parse_args()
# Get coordinates for the given city
name = args.name
hello_world(name)
import inspect
from kubiya_sdk.tools.models import Arg, Tool, FileSpec
from kubiya_sdk.tools.registry import tool_registry
from . import main
hello_tool = Tool(
name="say_hello",
type="docker",
image="python:3.12",
description="Prints hello {name}!",
args=[Arg(name="name", description="name to say hello to", required=True)],
on_build=""" # Optimizes build by cache to reduce execution time
curl -LsSf https://astral.sh/uv/install.sh | sh > /dev/null 2>&1
. $HOME/.cargo/env
uv venv > /dev/null 2>&1
. .venv/bin/activate > /dev/null 2>&1
if [ -f /tmp/requirements.txt ]; then
uv pip install -r /tmp/requirements.txt > /dev/null 2>&1
fi
""",
content="""
python /tmp/main.py "{{ .name }}"
""",
with_files=[
FileSpec(
destination="/tmp/main.py",
content=inspect.getsource(main),
),
# Add any requirements here if needed
# FileSpec(
# destination="/tmp/requirements.txt",
# content="",
# ),
],
)
Contributing
We welcome contributions to the Kubiya SDK! Please refer to our Contributing Guidelines for more information on how to get started.
License
Kubiya SDK is released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kubiya_sdk-0.1.14.tar.gz
.
File metadata
- Download URL: kubiya_sdk-0.1.14.tar.gz
- Upload date:
- Size: 60.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.4.29
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 288440ba009c7bf0f8d0d4f0a0b67219205d978197d2ed6523d8cb9f93a41bab |
|
MD5 | 74ce92258ee81937d7e6b996075b06c3 |
|
BLAKE2b-256 | 7843bcbae6416674dea13022855b9bf9e5b3e6dc646d1b08203e697c68a90f3e |
File details
Details for the file kubiya_sdk-0.1.14-py3-none-any.whl
.
File metadata
- Download URL: kubiya_sdk-0.1.14-py3-none-any.whl
- Upload date:
- Size: 41.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.4.29
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 753231dfa1d1cc57a7ab53830e104b3f1ff24451ce66eb4ac8f092414fdde453 |
|
MD5 | 73840d8dfd8a5be982124501c8515866 |
|
BLAKE2b-256 | 0198c31ebd9de7a4de36ed7ad435f15ea8b63723d2ece67e5057cdc06a3d8276 |