Skip to main content

Callables Python SDK

Turn Python functions into forms, schedules and run history your whole team can use. Decorate a function with @deploy, push the repo, and people run it from the Callables web app — no Python needed on their end.

pip install callables

Docs: callables.app/docs.

This installs the call command.

from typing import Literal
from callables import deploy

@deploy(title="Weekly report", secrets=["SALES_API_TOKEN"], schedule="0 9 * * MON")
def weekly_report(region: Literal["NA", "EMEA", "APAC"] = "NA", days: int = 7) -> list[dict]:
    """Deals closed in the last N days."""
    ...
  • Inputs come from the type hints: str, int, float, bool, date, Literal[...]/Enum (dropdowns), list[...], optional (X | None) and Pydantic models. Defaults become prefilled values.
  • Results are shown by return type: str as Markdown, list[dict] (or a DataFrame) as a table with CSV download, dict/Pydantic model as a key-value list, None as "done".
  • Files in: a File parameter becomes an upload field. Your function gets a File with .path, .name, .read_text(), .read_bytes() and .open(). Limit the picker with Annotated[File, accept(".csv", ".xlsx")].
  • Files out: return a File (or a list[File]) and people get download buttons. To hand back files alongside another result, call save_file(path_or_bytes, name=...). Files are kept for 24 hours by default.
  • Secrets you list are injected as environment variables at run time (os.environ["SALES_API_TOKEN"]); set their values in the Callables console.
  • Schedules are cron expressions, in UTC.
from typing import Annotated
from callables import deploy, File, accept, save_file

@deploy(title="Clean up a sales sheet")
def clean(sheet: Annotated[File, accept(".csv")]) -> File:
    rows = sheet.read_text().splitlines()
    save_file(f"{len(rows)} rows".encode(), name="summary.txt")   # an extra download
    out = "/tmp/clean.csv"
    ...
    return File(out, name=f"clean-{sheet.name}")

Try a function on your machine before pushing:

call check                                   # problems a deploy would hit, with fixes (exit 1 on errors)
call weekly_report --region EMEA --days 30   # every function is also a CLI command
call local weekly_report -i region=EMEA -i days=30
call local clean -i sheet=@sales.csv         # @path passes a file; outputs land in ./callables-output/
call manifest                                # what the platform will see

Coding agents

The SDK carries its own guide for Claude Code, Cursor, Codex and other agents:

call init   # an example automation, .claude/skills/callables/SKILL.md and an AGENTS.md section
call docs   # print the full guide

call check --json and call local ... --json print one JSON object on stdout, so an agent can check and run functions and read the result. Re-run call init after upgrading the SDK to refresh the instructions. Your own files and the rest of AGENTS.md are left alone.

On the platform, builds use the server's own copy of this package, so you don't need to add callables to your requirements.txt (it's fine if you do).

Developing the SDK

python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

The platform (callables-api) depends on this package and copies the installed version into every build, so a release only reaches deployed functions once the API is updated to it. See RELEASING.md.

License

Apache-2.0. See LICENSE. Copyright 2026 Nomial. "Callables" is a trademark of Nomial and is not covered by the license.

Metadata

Release files for callables 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for callables 0.3.0
File Size Uploaded Provenance Actions
callables-0.3.0.tar.gz 43.3 kB With provenance Details for callables-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for callables 0.3.0
File Interpreter ABI Platform Actions
callables-0.3.0-py3-none-any.whl Python 3 none any Details for callables-0.3.0-py3-none-any.whl

Total release size: 82.3 kB

Release files / callables-0.3.0.tar.gz

Download URL callables-0.3.0.tar.gz
Size 43.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bff72be4eabf9f7342fb6b271879c7a3de22bf80172ddb3b5d45a91074b1d040
BLAKE2b-256 checksum
How to use checksums
556c6944312e18ec33e48e85a88e7c2ea99cf8d87b5713e39f1366a66788b4f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / callables-0.3.0-py3-none-any.whl

Download URL callables-0.3.0-py3-none-any.whl
Size 39.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cc64ef6a398b22e8760ada4329177a84968f116bc9356465f1271efb9f302880
BLAKE2b-256 checksum
How to use checksums
1585833ccad172939e25d5dfc7767e15d3385b4fc8b3f6141df06e77cc2646cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Security for callables 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for callables-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page