mcpField
D
deploy-chalk-function

deploy-chalk-function

github.com/chalk-aiCloud & DevOps01.1k installsUpdated 6w ago
Repository

About deploy-chalk-function

A skill for preparing and deploying Python functions with the `chalkcompute` package. It covers script setup, required credentials, decorator behavior, and invoking a deployed function remotely.

Key features

  1. 01Python script setup with `uv`
  2. 02Python version and dependency constraints
  3. 03Required Chalk environment variables
  4. 04Deploy-at-import decorator behavior
  5. 05Remote invocation of deployed functions

Use cases

  1. 01Creating a Python Chalk function script
  2. 02Configuring credentials for deployment
  3. 03Calling a deployed function remotely

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/chalk-ai/chalk-ai-plugins --skill deploy-chalk-function

After installing, type/deploy-chalk-functionin Claude Code to confirm it loaded.

Details

From the project README

Deploy a Chalk function

Make a python file that uses the chalkcompute package (PyPI name is chalkcompute, not chalk-sandbox-sdk). Use a uv shebang. Pin Python to <3.14 because a transitive Rust dep (chalk-remote-call-python) builds against PyO3 which currently maxes out at 3.13.

#!/usr/bin/env -S uv run --script
#
# /// script
# requires-python = ">=3.12,<3.14"
# dependencies = ["chalkcompute"]
# ///

import chalkcompute


@chalkcompute.function()
def some_function(arg_1: str) -> str:
    return f"hi {arg_1}"


if __name__ == "__main__":
    print(some_function("world"))

Notes:

  • @chalkcompute.function must be called — @chalkcompute.function() (keyword-only args). Bare @chalkcompute.function raises TypeError: function() takes 0 positional arguments but 1 was given.
  • The decorator deploys the function at import time (builds image, uploads, registers).
  • Calling the decorated function (some_function("world")) invokes it remotely and returns the result.

Required env vars

The SDK reads creds from env, not from chalk CLI config. The env var is CHALK_ENVIRONMENT_ID, not CHALK_ENVIRONMENT.

CHALK_API_SERVER
CHALK_CLIENT_ID
CHALK_CLIENT_SECRET
CHALK_ENVIRONMENT_ID

You can read these out of chalk config output for the current project. Example invocation:

CHALK_API_SERVER=... CHALK_CLIENT_ID=... CHALK_CLIENT_SECRET=... CHALK_ENVIRONMENT_ID=... ./your_script.py

Without CHALK_ENVIRONMENT_ID you'll get a permission_denied error from CustomImageService.GetOrBuildCustomImage even though CHALK_CLIENT_ID/CHALK_CLIENT_SECRET are valid.

Local SDK source

If chalkcompute isn't on the configured index (e.g. the script can't resolve chalkcompute from PyPI), point uv at a local checkout of chalk-sandbox-sdk:

# [tool.uv.sources]
# chalkcompute = { path = "/path/to/chalk-sandbox-sdk" }

Comments

Markdown supported