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:
stras Markdown,list[dict](or a DataFrame) as a table with CSV download,dict/Pydantic model as a key-value list,Noneas "done". - Files in: a
Fileparameter becomes an upload field. Your function gets aFilewith.path,.name,.read_text(),.read_bytes()and.open(). Limit the picker withAnnotated[File, accept(".csv", ".xlsx")]. - Files out: return a
File(or alist[File]) and people get download buttons. To hand back files alongside another result, callsave_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. Locally,call localandcall <group> <action>load the project's.envinstead (variables already set in your shell win). - 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.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| callables-0.5.0.tar.gz | 65.1 kB | With provenance | Details for callables-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| callables-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for callables-0.5.0-py3-none-any.whl |
Total release size: 122.1 kB
Release files / callables-0.5.0.tar.gz
| Download URL | callables-0.5.0.tar.gz |
|---|---|
| Size | 65.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36a8823fd89a5b1f3427e947c807d3eb373f7645bd78cec79baa82aa70fdb0d5
|
|
BLAKE2b-256 checksum How to use checksums |
e6776450473d19d87ff7e182e1b3d8c55682dfd9bedbdfde5f11715b3dab7dd0
|
| 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 Nov 9, 2026.
Transparency logRelease files / callables-0.5.0-py3-none-any.whl
| Download URL | callables-0.5.0-py3-none-any.whl |
|---|---|
| Size | 56.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad22845432bfbd1872f7c881a2353d0dc8fbfba667642e42a0f45be784bc6e1b
|
|
BLAKE2b-256 checksum How to use checksums |
3fdc9cd77b10230924308efcf8fb1bdfb4e08a427fe49fc99f3caadd50d61655
|
| 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 Nov 9, 2026.
Transparency logSecurity for callables 0.5.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.
Attestation for callables-0.5.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 Nov 9, 2026.
Transparency logA 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.