Skip to main content

Public Python SDK for building and running Ara apps.

Project description

Ara Python SDK

Public Python SDK for building Ara apps with a decorator-first workflow style.

Install

pip install ara-sdk

Principles

  • Public SDK is generic and provider-agnostic.
  • Runtime policy, retries, and safety controls are enforced server-side.
  • Optional integrations (Cal.com, CRM, etc.) live in examples, not in the core SDK package.

Quickstart

from ara_sdk import App, Secret, invoke, run_cli, runtime, schedule

app = App(
    "Investor Meeting Booker",
    project_name="investor-meeting-booking",
    runtime_profile=runtime(
        env={"APP_MODE": "production"},
        secrets=[
            Secret.from_name("provider-shared", required_keys=["OPENAI_API_KEY"]),
            Secret.from_local_environ("provider-local", env_keys=["OPENAI_API_KEY"]),
        ],
    ),
)

@app.tool(id="send_email", description="Send one email.")
def send_email(to: str, subject: str, body: str) -> dict:
    return {"ok": True, "to": to, "subject": subject}

DAILY_FOLLOWUPS = schedule.cron(
    id="daily-followups",
    expr="0 13 * * 1-5",
    timezone="UTC",
    run=invoke.agent("booking-coordinator", input={"message": "Send pending follow-ups."}),
)

@app.agent(
    id="booking-coordinator",
    entrypoint=True,
    task="Coordinate scheduling requests.",
    skills=["send_email", "automation_create", "automation_list"],
    schedules=[DAILY_FOLLOWUPS],
)
def booking_coordinator():
    """Coordinate scheduling requests."""

if __name__ == "__main__":
    run_cli(app)
export ARA_API_KEY="your_long_lived_api_key"
export OPENAI_API_KEY="your_provider_key"

python app.py deploy
python app.py setup-auth
python app.py run --agent booking-coordinator --message "Need 3 slots next week"
python app.py run-async --agent booking-coordinator --message "Need 3 slots next week" --response-mode poll
python app.py events --event-type channel.web.inbound --channel web --message "hello"
python app.py setup

Environment

  • ARA_API_KEY: long-lived user API key for control plane
    • In the Ara app, open Settings -> System, then use API Key -> Copy API Key.
    • Paste that value into ARA_API_KEY before running SDK commands.
    • Legacy ARA_ACCESS_TOKEN is still accepted as a compatibility fallback.
  • ARA_API_BASE_URL: optional API override (defaults to production API)
  • ARA_RUNTIME_KEY: optional runtime key override for run/events
  • ARA_APP_HEADER_KEY: optional app header key override (X-Ara-App-Key) for run/events/run-async/run-status
    • Prefer running python app.py setup-auth to mint/store an app header key in .app-header-key.local.
    • Set ARA_APP_HEADER_KEY only when overriding that generated key.

Local bootstrap helpers:

  • python app.py setup-auth:
    • resolves app_id by app slug
    • ensures .runtime-key.local exists (optional)
    • creates /apps/{app_id}/x-keys key when missing
    • writes .app-header-key.local for subsequent CLI calls

Runtime env and secrets

runtime(...) supports:

  • env: plain runtime environment values (runtime_profile.env)
  • secrets: ordered secret references (runtime_profile.secret_refs)

Secret helper options:

  • Secret.from_name(name, required_keys=None) (reference only)
  • Secret.from_dict(name, env_dict) (synced at deploy)
  • Secret.from_dotenv(name, filename=".env") (synced at deploy)
  • Secret.from_local_environ(name, env_keys=[...]) (synced at deploy)

Deploy behavior:

  • Local secret sources sync to /apps/{app_id}/secrets before warmup.
  • Secret references remain in manifest; plaintext values are not embedded in app manifest payloads.

Multi-sandbox proposal shape

The SDK can now declare sandbox placement and spawn intent in the manifest:

  • policy: shared | dedicated | ephemeral | inherited
  • key: logical sandbox selector used by runtime placement
  • spawn: optional child-sandbox controls (to, max_depth, max_children_per_parent, max_total_child_sessions_per_run, ephemeral_ttl_minutes, child_policy, child_runtime)

Example:

sandbox(
    policy="dedicated",
    key="research-planner",
    allow_spawn=True,
    spawn_to=["deep-researcher", "verifier"],
    max_spawn_depth=3,
    max_children_per_parent=4,
    max_total_child_sessions_per_run=10,
    ephemeral_ttl_minutes=5,
    child_policy="ephemeral",
    child_runtime=runtime(memory_mb=1024),
)

Backward compatibility is preserved by default. Non-shared placement only activates when invocation input explicitly opts in:

  • use_additional_sandbox=true, or
  • sandbox.enable_additional_sandbox=true

Scheduling model

Use one schedule shape everywhere:

  • schedule.cron(...) / schedule.every(...) for static declarations on @app.agent
  • invoke.agent(...) / invoke.tool(...) for schedule targets
  • scheduler.create(spec) for dynamic runtime automation payloads

Examples

See examples/ for optional integrations and demo projects:

  • examples/calcom-booking/
  • examples/async-ngrok-webhook/
  • examples/framework-adapters/minimal_langgraph_subagent.py (legacy)
  • examples/framework-adapters/minimal_agno_subagent.py (legacy)

Security

  • Never commit API keys, runtime keys, or provider secrets.
  • Keep provider-specific credentials in environment variables.

License

This repository is source-available under a strict proprietary license. Unauthorized copying, redistribution, or derivative works are prohibited. See LICENSE for full terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ara_sdk-0.1.11.tar.gz (31.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ara_sdk-0.1.11-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file ara_sdk-0.1.11.tar.gz.

File metadata

  • Download URL: ara_sdk-0.1.11.tar.gz
  • Upload date:
  • Size: 31.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for ara_sdk-0.1.11.tar.gz
Algorithm Hash digest
SHA256 6d4ecccb53f2d8330f7b16a1e4e4e5f6e089620de0cc0b65b8dc03cebbb5e688
MD5 d0cba048f2de54ec4cb53c6ede1a8a6f
BLAKE2b-256 5a1792a0e9cc3e4f2bf44e7b5e7f0a58cceeba7f620a49cf1c83d286393260e3

See more details on using hashes here.

File details

Details for the file ara_sdk-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: ara_sdk-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for ara_sdk-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 f7326fefa0b3d7164452d769378ccb90d3b64fb8abdd9929a642d95115980eb9
MD5 7661b3a9e9782f32f5a1ea5787076ab5
BLAKE2b-256 160fb8a9fbf8de43b04c8bb5b74896563ccddc2dcacfbb5c67e09eb8f88e4233

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page