skill-as-a-service

📁 rebyteai/skill-as-a-service-skill 📅 Feb 9, 2026
4
总安装量
4
周安装量
#49751
全站排名
安装命令
npx skills add https://github.com/rebyteai/skill-as-a-service-skill --skill skill-as-a-service

Agent 安装分布

opencode 4
gemini-cli 4
claude-code 4
codex 4
github-copilot 2
kimi-cli 2

Skill 文档

Skill-as-a-Service API

Spawn coding agent tasks in the cloud via API. Each task gets its own isolated VM with skills pre-installed.

Before You Start

Check that REBYTE_API_KEY is set:

echo "$REBYTE_API_KEY"

If empty, ask the user for their API key (get one at https://app.rebyte.ai/settings/api-keys), then:

export REBYTE_API_KEY="rbk_..."

Create a Task

curl -s -X POST https://api.rebyte.ai/v1/tasks \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Your task description here",
    "skills": ["deep-research"]
  }'

Response:

{
  "id": "550e8400-...",
  "workspaceId": "660e8400-...",
  "url": "https://app.rebyte.ai/run/550e8400-...",
  "status": "running",
  "createdAt": "2026-02-09T10:30:00.000Z"
}

The url is live immediately. Give it to the user — they watch the agent work in real time. You do NOT need to poll or wait.

Create a Task with Files

If the agent needs to work on files (PDFs, CSVs, images, etc.):

# 1. Get a signed upload URL
FILE_RESP=$(curl -s -X POST https://api.rebyte.ai/v1/files \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "data.csv"}')

UPLOAD_URL=$(echo "$FILE_RESP" | jq -r '.uploadUrl')
FILE_ID=$(echo "$FILE_RESP" | jq -r '.id')
FILE_NAME=$(echo "$FILE_RESP" | jq -r '.filename')

# 2. Upload the file content
curl -s -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @data.csv

# 3. Create a task with the file attached
curl -s -X POST https://api.rebyte.ai/v1/tasks \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"prompt\": \"Analyze this CSV and summarize findings\",
    \"skills\": [\"data-analysis\"],
    \"files\": [{\"id\": \"$FILE_ID\", \"filename\": \"$FILE_NAME\"}]
  }"

The file is copied into the task’s VM at /code/{filename} before the agent starts.

Create a Task with a GitHub Repo

curl -s -X POST https://api.rebyte.ai/v1/tasks \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Add unit tests for the auth module",
    "skills": ["deep-research"],
    "githubUrl": "owner/repo",
    "branchName": "main"
  }'

Share Results Publicly

By default, tasks are visible only to org members. To share with anyone (no login required):

TASK_ID="the-task-id-from-create"
curl -s -X PATCH "https://api.rebyte.ai/v1/tasks/$TASK_ID/visibility" \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"visibility": "public"}'

Response includes shareUrl — give this to anyone:

{
  "visibility": "public",
  "shareUrl": "https://app.rebyte.ai/share/550e8400-..."
}

Check Task Status (Optional)

You don’t need to poll — the URL is live. But if you need to wait for completion:

curl -s "https://api.rebyte.ai/v1/tasks/$TASK_ID" \
  -H "API_KEY: $REBYTE_API_KEY" | jq '{status, url}'

Statuses: running, completed, failed, canceled

Follow Up on a Task (Optional)

Send additional instructions to a running or completed task:

curl -s -X POST "https://api.rebyte.ai/v1/tasks/$TASK_ID/prompts" \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Now fix the issues you found"}'

Reuse a Workspace (Optional)

Pass workspaceId from a previous task to skip VM provisioning (much faster):

# First task creates a new VM
TASK1=$(curl -s -X POST https://api.rebyte.ai/v1/tasks \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Set up the project", "githubUrl": "owner/repo"}')
WS_ID=$(echo "$TASK1" | jq -r '.workspaceId')

# Second task reuses the same VM
curl -s -X POST https://api.rebyte.ai/v1/tasks \
  -H "API_KEY: $REBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"prompt\": \"Now add tests\", \"workspaceId\": \"$WS_ID\"}"

Delete a Task

curl -s -X DELETE "https://api.rebyte.ai/v1/tasks/$TASK_ID" \
  -H "API_KEY: $REBYTE_API_KEY"

Returns HTTP 204 (no content).

Create Task Parameters

Field Type Required Description
prompt string Yes Task description (max 100,000 chars)
executor string No opencode (default), claude, gemini, codex
model string No Model tier (default: lite)
files object[] No Files from POST /v1/files. Each: {"id": "...", "filename": "..."}
skills string[] No Skill slugs: ["deep-research", "pdf", "data-analysis"]
githubUrl string No GitHub repo (owner/repo)
branchName string No Branch (default: main)
workspaceId string No Reuse a workspace from a previous task

All Endpoints

Method Endpoint Description
POST /v1/files Get signed upload URL for a file
POST /v1/tasks Create a task
GET /v1/tasks List tasks
GET /v1/tasks/:id Get task with status and prompts
POST /v1/tasks/:id/prompts Send a follow-up prompt
PATCH /v1/tasks/:id/visibility Set private/shared/public
DELETE /v1/tasks/:id Delete task

Bundled Python Client

This skill includes a Python client and CLI at scripts/. To use them:

# Find the skill directory
SKILL_DIR=$(find ~/.skills -maxdepth 1 -name '*skill-as-a-service*' -type d | head -1)

# Use the CLI
python3 "$SKILL_DIR/scripts/rebyte_cli.py" create --prompt "Hello world"
python3 "$SKILL_DIR/scripts/rebyte_cli.py" get TASK_ID
python3 "$SKILL_DIR/scripts/rebyte_cli.py" list

# Or use the client in Python
python3 -c "
import sys; sys.path.insert(0, '$SKILL_DIR/scripts')
from rebyte_client import RebyteClient
client = RebyteClient()
task = client.create_task(prompt='Hello world')
print(task['url'])
"

See references/api.md for full API details and references/examples.md for more examples.