Workflow Application binds a workflow to its actual execution content. The package records identity, entry Skill, execution module, dependencies, and hashes so the host can load and execute it.
Use Compose any Skill to have an Agent author complete business content. For manual authoring and integration, start with this local report sample.
When to use an application
Basic Runtime can coordinate functions and save results inside a service. Use Application when delivering to another Agent platform, pinning Skill dependencies, or installing project entries.
The sample creates a local Markdown report, retains the draft, waits for approval, and publishes locally. Use a separate directory to avoid packaging source code, runtime records, and credentials together.
Minimal package
Create local-report with three files.
application.json:
application.mjs:
SKILL.md:
draft and sources can complete independently. compose generates a real Markdown draft after both finish. The parent displays the draft, path, and hash before waiting for a decision. The sample checks report format and local publication; source fact checking and external deployment need additional validation and permission.
Load through the SDK
Use a separate package directory instead of making the entire project and runtime state the package root. The loader checks actual files, identity, and pinned dependencies; changing one version’s content cannot retain the same original identity.
Loading executes the application module. Review module and dependency sources first; pinned hashes do not provide a code sandbox.
Generate and approve the report
Save the following script as app-run.mjs at the project root, outside the application package. It uses the loader’s pinned implementation and Store, explicitly advancing the report child workflow:
Run node app-run.mjs first and inspect the draft, path, and hash. After confirming the current content, run node app-run.mjs --approve to print the publication result and local report path. Reports live in .comet/reports/local-report/; the application Store manages Run data. Keep runner scripts and Run files outside the pinned package to preserve its content identity.
Run through the CLI
Save each request as JSON and use comet runtime:
start.json:
Save the returned Run ID in your business record. Later queries, execution, and recovery use —application local-report with that original ID. Read actual child Run, Action, and Wait IDs instead of deriving them from step names.
Save inspect.json and run the query:
Read the current pending Action and configured executor from the actual response, then submit execute as described in the runtime reference. For child execution, use the returned child Run ID. On approval, show the actual draft and Wait before submitting the decision. A successful start does not mean the report has been generated.
CLI suits Agent platforms that execute commands. A Node.js host can use loaded capabilities with the SDK. Both use the same pinned package and Run; do not maintain a replacement workflow state.
Connect real Skills
inspectApplicationSkill reads the actual directory. adaptApplicationSkill creates an adaptation contract covering reviewed content, capabilities, schemas, side effects, acceptance, and recovery. Pinned dependencies cannot silently change during a Run.
Use createApplicationSkillExecutor for actual host calls, capability checks, and authorization. Skill loading, host completion claims, machine validation, and independent review are recorded separately; one cannot replace another.
See comet application for delivery, application evaluation for evaluation, and artifact validation for required files and business conditions.
Next: installation, distribution, and upgrades. Last modified on October 22, 2026