Rumatadocs
Browse documentation

Activities

Which standard workflow activities to use, and how to build, deploy and debug custom Python activities from Git.

Step-by-step guidance.

Before you start

  • A workflow task. App APIs and CRUD belong in a backend instead.

Standard activities

NeedUse
SQL inside a workflow job`SqlExecutionEngine` (Run Database Query) with a saved query. See Database.
Durable files`file-storage-operations`. See File storage.
PDF, Office, text or image text and structureThe shared Extract Document activity.
Visual or audio and video interpretationA native AI agent step. See AI steps.
Existing workflow authentication`UserRegister`, `UserLogin` and `IssueFactoryJwt`. New apps use native accounts.
Images, video and voiceImage Generation, Video Generation and Voice Generation.

Reuse discovered activity IDs. Configure and debug the first critical route before adding others. Supported formats need no custom activity.

Build a custom activity

The path is local smoke test, pushed commit, build, healthy deployment, then one safe debug request.

  1. Call `getFactoryBuilderContext` and `searchActivities`, and inspect `activities/*/rumata.activity.yaml`.
  2. Run `bash $RUMATA_ACTIVITY_VALIDATOR_PATH <activity-dir>` (fallback `/app/scripts/verification/validate-git-backed-activity.sh`) and require `Local activity smoke passed`. This checks the source and handler contract, not the remote build.
  3. Commit and push within the user’s authorization. For a new activity call `createActivityFromGit`. For an existing one, edit, push, then call `buildActivityFromGit`. Never recreate an existing activity.
  4. Poll non-terminal builds with `getActivityBuild`. Only a successful build can be deployed with `deployActivityRealtime`.
  5. Poll `getActivityDeployment` until healthy.
  6. For a workflow demo, search workflows, create a minimal wrapper and call `debugWorkflowRequest`.

Activity source contract

text
activities/<id>/
  main.py
  requirements.txt
  rumata.activity.yaml
  • Python only. Declare the Python 3.12 realtime runtime, with entry and package fields relative to the activity directory.
  • Match `handler(data, ...configurationArgs)` to the configuration template. Do not add `context`.
  • Reference secrets by name, never by value.
  • Local uncommitted files are not build input. Builds use the project’s linked repository at an immutable commit, which may differ from the factory checkout.