The open-source TypeScript framework for building AI workflows and agents. Designed for Claude Code — describe what you want, Claude builds it, with all the best practices already in place. One framework.
> /plugin marketplace add growthxai/output> /plugin install outputai@outputai
Repo: growthxai/output
What's inside
The open-source TypeScript framework for building AI workflows and agents. Designed for Claude Code — describe what you want, Claude builds it, with all the best practices already in place.
One framework. Prompts, evals, tracing, cost tracking, orchestration, credentials. No SaaS fragmentation. No vendor lock-in. Everything in your codebase, everything your AI coding agent can reach.
Every piece of the AI stack is becoming a separate subscription. Prompts in one tool. Traces in another. Evals in a third. Cost tracking across five dashboards. None of them talk to each other. Half of them will get acquired or shut down before your product ships.
Output brings everything together. One TypeScript framework, extracted from thousands of production AI workflows. Best practices baked in so beginners ship professional code from day one, and experienced AI engineers stop rebuilding the same infrastructure.
Output is the first framework designed for AI coding agents. The entire codebase is structured so Claude Code can scaffold, plan, generate, test, and iterate on your workflows. Every workflow is a folder — code, prompts, tests, evals, traces, all together. Your agent reads one folder and has full context.
.prompt files with YAML frontmatter and Liquid templating. Version-controlled, reviewable in PRs, deployed with your code. Switch providers by changing one line. No subscription needed to manage your own prompts.
Every LLM call, HTTP request, and step traced automatically. Token counts, costs, latency, full prompt/response pairs. JSON in logs/runs/. Zero config. Claude Code analyzes your traces and fixes issues — because the data is in your file system.
LLM-as-judge evaluators with confidence scores. Inline evaluators for production retry loops. Offline evaluators for dataset testing. Deterministic assertions and subjective quality judges.
Anthropic, OpenAI, Azure, Vertex AI, Bedrock. One API. Structured outputs, streaming, tool calling — all work the same regardless of provider.
Temporal under the hood. Automatic retries with exponential backoff. Workflow history. Replay on failure. Child workflows. Parallel execution with concurrency control. You don't think about Temporal until you need it — then it's already there.
AI apps need a lot of API keys. Sharing .env files is risky, and coding agents shouldn't see your secrets. Output encrypts credentials with AES-256-GCM, scoped per environment and workflow, managed through the CLI. No external vault subscription needed.
Requirements:
Scaffold a project and add your API key to .env (ANTHROPIC_API_KEY=sk-ant-...):
npx @outputai/cli init
cd <project-name>
Start the full development environment — Temporal server, API server, a worker with hot reload, and the Temporal UI at http://localhost:8080:
npx output dev
Run your first workflow and inspect the execution:
npx output workflow run blog_evaluator paulgraham_hwh
npx output workflow debug <workflow-id>
For the full getting started guide, see the documentation.
Orchestration layer — deterministic coordination logic, no I/O.
// src/workflows/research/workflow.ts
workflow({
name: 'research',
fn: async (input) => {
const data = await gatherSources(input);
const analysis = await analyzeContent(data);
const quality = await checkQuality(analysis);
return quality.passed ? analysis : await reviseContent(analysis, quality);
}
});
Where I/O happens — API calls, LLM requests, database queries. Each step runs once and its result is cached for replay.
// src/workflows/research/steps.ts
step({
name: 'gatherSources',
fn: async (input) => {
const results = await searchApi(input.topic);
return { sources: results };
}
});
.prompt files with YAML configuration and Liquid templating.
---
provider: anthropic
model: claude-sonnet-4-20250514
temperature: 0
---
<system>You are a research analyst.</system>
<user>Analyze the following sources about {{ topic }}: {{ sources }}</user>
LLM-as-judge evaluation with confidence scores and reasoning.
// src/workflows/research/evaluators.ts
evaluator({
name: 'checkQuality',
fn: async (content) => {
const { output } = await generateText({
prompt: 'evaluate_quality',
variables: { content },
output: Output.object({
schema: z.object({
isQuality: z.boolean(),
confidence: z.number().describe('0-100'),
reasoning: z.string()
})
})
});
return new EvaluationBooleanResult({
value: output.isQuality,
confidence: output.confidence,
reasoning: output.reasoning
});
}
});
| Package | Description |
|---|---|
| @outputai/core | Workflow, step, and evaluator primitives |
| @outputai/llm | Multi-provider LLM with prompt management |
| @outputai/http | HTTP client with tracing |
| @outputai/cli | CLI for project init, dev environment, and workflow management |
Production-ready workflows you can run locally, learn from, and fork — all from the output-examples gallery:
| Workflow | Description | APIs |
|---|---|---|
| blog_evaluator | Evaluate blog post signal-to-noise quality | Jina Reader |
| call_scorer | Score sales call transcripts against MEDDIC, BANT, or SPIN | LLM only |
| changelog_generator | Generate categorized changelogs from GitHub commits and PRs | GitHub |
| dependency_audit | Audit npm dependencies for vulnerabilities, licenses, and abandonment | GitHub, OSV, npm |
| recipe_extractor | Extract structured recipes from blog URLs | Jina Reader |
| url_summarizer | Summarize any webpage into TLDR, key points, and FAQ | Jina Reader |
| youtube_summarizer | Summarize YouTube videos with key moments and takeaways | YouTube |
| ai_hn_digest | Personalized Hacker News digest published to Beehiiv newsletter | HN, Jina Reader, Beehiiv |
| sales_call_processor | Process sales call transcripts into notes + parallel recipe analyses | LLM only |
Browse the full gallery at output.ai/gallery.
| Project | Description |
|---|---|
| CheckThat is an AEO platform built on Output's durable, deterministic LLM workflows — tracking how B2B brands show up across ChatGPT, Claude, Perplexity, and Google AI, covering 2.6M+ AI responses spanning 5,875+ brands. |
For production configuration and advanced settings (LLM providers, Temporal Cloud, tracing, and more), see the operations docs.
See CONTRIBUTING.md.
Apache 2.0 — see LICENSE file.
Built with Temporal, Vercel AI SDK, Zod, LiquidJS.
.changeset/
calm-lions-env.md
calm-results-display.md
clear-errors-return.md
config.json
cozy-peas-stand.md
direct-results-flow.md
fancy-wombats-buy.md
heavy-friends-beg.md
honest-years-smash.md
lazy-suits-stop.md
neat-cups-drop.md
petite-rivers-melt.md
pink-wings-judge.md
plain-llm-errors.md
quick-bat-fly.md
README.md
red-dragon-fly.md
shaggy-ads-march.md
short-keys-begin.md
shy-foxes-try.md
stale-crabs-kiss.md
swift-balloons-march.md
swift-snails-bet.md
swift-things-sort.md
true-parents-worry.md
two-socks-post.md
.claude/
.claude-plugin/
marketplace.json
agents/
api-expert.md
docker-expert.md
llm-expert.md
nodejs-expert.md
temporal-expert.md
testing-expert.md
commands/
pr-review.md
settings.json
skills/
llm-output-schema-constraints/
SKILL.md
prompt-file-provider-options/
SKILL.md
validate/
SKILL.md
.dockerignore
.github/
dependabot.yml
ISSUE_TEMPLATE/
bug_report.md
config.yml
feature_request.md
pull_request_template.md
scripts/
post_pr_review_comment.mjs
pr_review_markdown.js
pr_review_markdown.spec.js
pr_review.schema.json
workflows/
auto_pr_review.yml
claude.yml
docs_regenerate.yml
publish_dev.yml
publish_next.yml
publish.yml
release.yml
validation_dependabot.yml
validation_e2e.yml
validation.yml
.gitignore
.husky/
pre-commit
.npmrc
.tool-versions
api/
CHANGELOG.md
openapi.json
package.json
README.md
scripts/
generate_openapi.js
src/
clients/
errors.js
event_serialization.js
event_serialization.spec.js
event_types.js
event_types.spec.js
s3_client.js
s3_client.spec.js
temporal/
catalog.js
catalog.spec.js
connection_monitor.js
connection_monitor.spec.js
index.js
index.spec.js
types.js
types.spec.js
workflow/
workflow_result.js
workflow_result.spec.js
communication.js
communication.spec.js
describe_workflow.js
describe_workflow.spec.js
fetch_history_page.js
fetch_history_page.spec.js
get_history.js
get_history.spec.js
get_input.js
get_input.spec.js
get_result.js
get_result.spec.js
get_status.js
get_status.spec.js
index.js
list_runs.js
list_runs.spec.js
reset.js
reset.spec.js
run.js
run.spec.js
start.js
start.spec.js
stop.js
stop.spec.js
stream_history.js
stream_history.spec.js
terminate.js
terminate.spec.js
configs.js
configs.spec.js
handlers/
trace_log.js
trace_log.spec.js
utils.js
workflow_history_stream.js
workflow_history_stream.spec.js
workflow_history.js
workflow_history.spec.js
workflow_run.js
workflow_run.spec.js
index.js
index.spec.js
logger.js
middleware/
deprecated.js
error_handler.js
error_handler.spec.js
http_logger.js
http_logger.spec.js
request_id.js
utils.js
utils.spec.js
assets/
checkthat.png
home.png
CLAUDE.md
CODE_OF_CONDUCT.md
coding_assistants/
claude/
plugins/
outputai/
.claude-plugin/
plugin.json
agents/
workflow_context_fetcher.md
workflow_debugger.md
workflow_planner.md
workflow_prompt_writer.md
workflow_quality.md
hooks/
hooks.json
SESSION_START_CONTEXT.md
skills/
output-build-workflow/
SKILL.md
output-credentials-edit/
SKILL.md
output-credentials-env-vars/
SKILL.md
output-credentials-init/
SKILL.md
output-debug-workflow/
SKILL.md
output-dev-agent-class/
SKILL.md
output-dev-code-style/
SKILL.md
output-dev-create-skeleton/
SKILL.md
output-dev-credentials/
SKILL.md
output-dev-eval-testing/
SKILL.md
output-dev-evaluator-function/
SKILL.md
output-dev-folder-structure/
SKILL.md
output-dev-http-client-create/
SKILL.md
output-dev-model-selection/
SKILL.md
output-dev-prompt-file/
SKILL.md
output-dev-scenario-file/
SKILL.md
output-dev-skill-file/
SKILL.md
output-dev-step-function/
SKILL.md
output-dev-types-file/
SKILL.md
output-dev-upgrade-prompt-models/
SKILL.md
output-dev-workflow-cost/
SKILL.md
output-dev-workflow-function/
SKILL.md
output-error-direct-io/
SKILL.md
output-error-http-client/
SKILL.md
output-error-missing-schemas/
SKILL.md
output-error-nondeterminism/
SKILL.md
output-error-try-catch/
SKILL.md
output-error-zod-import/
SKILL.md
output-eval-audit/
SKILL.md
output-eval-dataset-design/
SKILL.md
output-eval-error-analysis/
SKILL.md
output-eval-judge-prompt/
SKILL.md
output-eval-validate-judge/
SKILL.md
output-meta-post-flight/
SKILL.md
output-meta-pre-flight/
SKILL.md
output-meta-project-context/
SKILL.md
output-migrate/
SKILL.md
output-plan-workflow/
SKILL.md
output-services-check/
SKILL.md
output-workflow-list/
SKILL.md
output-workflow-reset/
SKILL.md
output-workflow-result/
SKILL.md
output-workflow-run/
SKILL.md
output-workflow-runs-list/
SKILL.md
output-workflow-start/
SKILL.md
output-workflow-status/
SKILL.md
output-workflow-stop/
SKILL.md
output-workflow-trace/
output-workflow-trace-file/
SKILL.md
SKILL.md
README.md
context7.json
CONTRIBUTING.md
docker-compose.dev.yml
docker-compose.prod.yml
docker-compose.temporal.yml
docs/
guides/
api/
authentication.mdx
configuration.mdx
errors.mdx
index.mdx
changelog/
index.mdx
CLAUDE.md
clients/
index.mdx
cookbook/
assets/
zapier-app-connections.png
overview.mdx
zapier-sdk.mdx
costs/
cost-events.mdx
index.mdx
data/
releases.json
docs.json
evaluators/
best-practices.mdx
datasets-and-cli.mdx
datasets.mdx
evaluator-step.mdx
index.mdx
verdicts.mdx
workflow-evaluators.mdx
favicon.svg
index.mdx
llm/
index.mdx
providers.mdx
logo/
logo.svg
migrations/
index.mdx
v0.1.12-to-v0.2.0.mdx
v0.10.0-to-v0.11.0.mdx
v0.2.0-to-v0.3.0.mdx
v0.3.0-to-v0.4.0.mdx
v0.4.0-to-v0.5.0.mdx
v0.5.2-to-v0.6.0.mdx
v0.6.0-to-v0.7.0.mdx
v0.7.0-to-v0.8.0.mdx
v0.8.0-to-v0.9.0.mdx
v0.9.0-to-v0.10.0.mdx
openapi.json
operations/
credentials.mdx
deployment/
deployment.mdx
advanced.mdx
railway.mdx
render.mdx
error-handling.mdx
error-hooks.mdx
external-workflow-packages.mdx
testing.mdx
tracing.mdx
worker-tuning.mdx
packages/
cli.mdx
core.mdx
credentials.mdx
evals.mdx
http.mdx
llm.mdx
prompts/
best-practices.mdx
index.mdx
skills.mdx
templating.mdx
README.md
scripts/
build_releases_json.mjs
lib/
changeset_parser.mjs
renderer.mjs
store.mjs
regenerate.mjs
start-here/
claude-code.mdx
getting-started.mdx
learning-path.mdx
steps/
best-practices.mdx
index.mdx
TODO_pages.md
workflows/
child-workflows.mdx
context.mdx
external-integration.mdx
index.mdx
parallel-execution.mdx
running.mdx
eslint.config.js
LICENSE
ops/
alert.sh
api.Dockerfile
assert_changelog_synced.sh
bump_prerelease.sh
bump_release.sh
ensure_eof_blank_line.sh
extra_files_error.sh
extra_files_warning.sh
format_files.sh
get_bump.sh
mint.Dockerfile
publish_api.sh
publish_npm.sh
README.md
regenerate_docs.sh
tag.sh
... 923 moreFAQ
output is a Claude Code plugin with 52 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes llm-output-schema-constraints, prompt-file-provider-options, validate. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.