Metadata-Version: 2.1
Name: surfkit
Version: 0.1.170
Summary: A toolkit for building AI agents that use devices
License: MIT
Author: Patrick Barker
Author-email: patrickbarkerco@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: agentdesk (>=0.2.76,<0.3.0)
Requires-Dist: devicebay (>=0.1.11,<0.2.0)
Requires-Dist: docker (>=7.0.0,<8.0.0)
Requires-Dist: kubernetes (>=29.0.0,<30.0.0)
Requires-Dist: litellm (>=1.35.8,<2.0.0)
Requires-Dist: namesgenerator (>=0.3,<0.4)
Requires-Dist: pydantic (>=2.6.4,<3.0.0)
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
Requires-Dist: rich (>=13.7.1,<14.0.0)
Requires-Dist: rootpath (>=0.1.1,<0.2.0)
Requires-Dist: taskara (>=0.1.79,<0.2.0)
Requires-Dist: threadmem (>=0.2.11,<0.3.0)
Requires-Dist: tiktoken (>=0.6.0,<0.7.0)
Requires-Dist: toolfuse (>=0.1.15,<0.2.0)
Description-Content-Type: text/markdown

<!-- PROJECT LOGO -->
<br />
<p align="center">
  <!-- <a href="https://github.com/agentsea/skillpacks">
    <img src="https://project-logo.png" alt="Logo" width="80">
  </a> -->

  <h1 align="center">Surfkit</h1>

  <p align="center">
    A toolkit for building AI agents that use devices
    <br />
    <a href="https://github.com/agentsea/surfkit"><strong>Explore the docs »</strong></a>
    <br />
    <br />
    <a href="https://github.com/agentsea/surfkit">View Demo</a>
    ·
    <a href="https://github.com/agentsea/surfkit/issues">Report Bug</a>
    ·
    <a href="https://github.com/agentsea/surfkit/issues">Request Feature</a>
  </p>
  <br>
</p>

## Installation

```sh
pip install surfkit
```

## Usage

### Building Agents

Initialize a new project

```sh
surfkit new [NAME]
```

Build a docker container for the agent

```sh
surfkit build
```

### Running Agents

Create an agent locally

```sh
surfkit create agent --name foo
```

Create an agent on kubernetes

```sh
surfkit create agent --runtime kube
```

List running agents

```sh
surfkit list agents
```

Get details about a specific agent

```sh
surfkit get agent --name foo
```

Fetch logs for a specific agent

```sh
surfkit logs --name foo
```

Delete an agent

```sh
surfkit delete agent --name foo
```

### Managing Devices

Create a device

```sh
surfkit create device --type desktop --provicer gce --name bar
```

List devices

```sh
surfkit list devices
```

View device in UI

```sh
surfkit view --name bar
```

Delete a device

```sh
surfkit delete device --name bar
```

### Tracking Tasks

Create a tracker

```sh
surfkit create tracker
```

List trackers

```sh
surfkit list trackers
```

Delete a tracker

```sh
surfkit delete tracker -n foo
```

### Solving Tasks

Solve a task with an existing setup

```sh
surfkit solve --description "search for common french ducks" --agent foo --device bar
```

Solve a task creating the agent ad hoc

```sh
surfkit solve --description "search for alpaca sweaters" \
--device bar --agent-file ./agent.yaml
```

Solve a task and kill the agent post-execution

```sh
surfkit solve --description "search for the meaning of life" \
--device bar --agent-file ./agent.yaml --kill
```

List tasks

```sh
surfkit list tasks
```

### Publishing Agents

Login to the hub

```sh
surfkit login
```

Publish the agent

```sh
surfkit publish
```

List published agent types

```sh
surfkit list types
```

Run a published agent

```sh
surfkit create agent --type SurfPizza --runtime kube
```

## Developing

Add the following function to your `~/.zshrc` (or similar)

```sh
function sk() {
    local project_dir="/path/to/surfkit/repo"
    local venv_dir="$project_dir/.venv"

    local ssh_auth_sock="$SSH_AUTH_SOCK"
    local ssh_agent_pid="$SSH_AGENT_PID"

    source "$venv_dir/bin/activate"

    export SSH_AUTH_SOCK="$ssh_auth_sock"
    export SSH_AGENT_PID="$ssh_agent_pid"

    python -m surfkit.cli.main "$@"
    deactivate
}
```

Replacing `/path/to/surfkit/repo` with the absolute path to your local repo.

Then calling `sk` will execute the working code in your repo from any location.

