{"id":24723140,"url":"https://github.com/callstackincubator/flows-ai","last_synced_at":"2025-05-16T11:03:44.199Z","repository":{"id":272943824,"uuid":"916821483","full_name":"callstackincubator/flows-ai","owner":"callstackincubator","description":"Run AI workflows with TypeScript \u0026 Vercel AI SDK","archived":false,"fork":false,"pushed_at":"2025-02-02T20:49:27.000Z","size":1422,"stargazers_count":233,"open_issues_count":6,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-11T04:04:25.283Z","etag":null,"topics":["agents","ai","flows","workflows"],"latest_commit_sha":null,"homepage":"https://flows-ai.callstack.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/callstackincubator.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-14T20:26:41.000Z","updated_at":"2025-05-08T15:04:22.000Z","dependencies_parsed_at":"2025-01-17T15:55:11.337Z","dependency_job_id":"38f148f1-4fb8-4cb8-8ac7-b1bd39164d70","html_url":"https://github.com/callstackincubator/flows-ai","commit_stats":null,"previous_names":["callstackincubator/workflows-ai"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Fflows-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Fflows-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Fflows-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/callstackincubator%2Fflows-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/callstackincubator","download_url":"https://codeload.github.com/callstackincubator/flows-ai/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518383,"owners_count":22084374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","flows","workflows"],"created_at":"2025-01-27T13:01:17.037Z","updated_at":"2025-05-16T11:03:44.137Z","avatar_url":"https://github.com/callstackincubator.png","language":"TypeScript","readme":"# Flows AI\n\nA lightweight, type-safe AI workflow orchestrator inspired by Anthropic's agent patterns. Built on top of Vercel AI SDK.\n\n## Installation\n\n```bash\nnpm install flows-ai\n```\n\nWhat to do next?\n\n- Read our [docs](https://flows-ai.callstack.com) for more information.\n- Check our [examples](./example/README.md) to see how you can use Flows AI.\n\n## Motivation\n\nLast year, we built Fabrice - an AI agent framework designed to break down complex tasks into smaller steps. We realized that AI agent systems today are essentially modern workflows where each node is an LLM call instead of a traditional function. The key difference lies not in the framework, but in the nature of these nodes: they have flexible input/output contracts.\n\nThis insight led us to redefine our approach and focus on an orchestration, so you can connect different (often incompatible input/outputs) together. \n\nThis library provides a simple, more deterministic way to build AI workflows. You can either explicitly define your workflow with loops and conditionals, or use an orchestrator agent to dynamically break down complex tasks. \n\nOn top of that, we keep our library simple and functional, without any classes or state.\n\n## Defining a workflow\n\nFirst, you need to define your agents.\n\n```ts\nconst translationAgent = agent({\n  model: openai('gpt-4o'),\n  system: 'You are a translation agent...',\n})\n\nconst summaryAgent = agent({\n  model: openai('gpt-4o'),\n  system: 'You are a summary agent...',\n})\n```\n\nThen, you can define and run your workflow.\n\n```ts\nconst translateFlow = sequence([\n  {\n    agent: 'translationAgent',\n    input: 'Translate this text to English',\n  },\n  {\n    agent: 'summaryAgent',\n    input: 'Now summarize the translated text',\n  }\n])\n\nexecute(translateFlow, {\n  agents: {\n    translationAgent,\n    summaryAgent\n  }\n})\n```\n\nLearn more about this and other flows in our [docs](https://flows-ai.callstack.com).\n\n## License\n\nMIT\n\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcallstackincubator%2Fflows-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcallstackincubator%2Fflows-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcallstackincubator%2Fflows-ai/lists"}