{"id":13509216,"url":"https://github.com/yomorun/yomo","last_synced_at":"2026-04-02T14:54:40.421Z","repository":{"id":36950090,"uuid":"276288252","full_name":"yomorun/yomo","owner":"yomorun","description":"🦖 Serverless AI Agent Framework with Geo-distributed Edge AI Infra.","archived":false,"fork":false,"pushed_at":"2026-03-29T14:10:40.000Z","size":69383,"stargazers_count":1894,"open_issues_count":14,"forks_count":143,"subscribers_count":43,"default_branch":"master","last_synced_at":"2026-03-29T17:30:36.868Z","etag":null,"topics":["a2a-protocol","chatgpt","claude-code","cursor","distributed-cloud","function-calling","geodistributedsystems","low-latency","mcp","openai","quic","realtime","serverless","stream-processing","yomo"],"latest_commit_sha":null,"homepage":"https://yomo.run","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yomorun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-01T05:48:28.000Z","updated_at":"2026-03-29T06:41:45.000Z","dependencies_parsed_at":"2024-11-06T16:39:50.081Z","dependency_job_id":"4c72191a-f63d-4bce-84cf-97982d95036b","html_url":"https://github.com/yomorun/yomo","commit_stats":{"total_commits":578,"total_committers":21,"mean_commits":"27.523809523809526","dds":0.740484429065744,"last_synced_commit":"b790a895668a49554ff23b8490ab8e38aca54ced"},"previous_names":[],"tags_count":142,"template":false,"template_full_name":null,"purl":"pkg:github/yomorun/yomo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yomorun%2Fyomo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yomorun%2Fyomo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yomorun%2Fyomo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yomorun%2Fyomo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yomorun","download_url":"https://codeload.github.com/yomorun/yomo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yomorun%2Fyomo/sbom","scorecard":{"id":113557,"data":{"date":"2025-07-28","repo":{"name":"github.com/yomorun/yomo","commit":"f9bc635a9b0e6a9085cefc5fb4ca7f12975dcc77"},"scorecard":{"version":"v5.2.1-26-g4feedb85","commit":"4feedb857ab8d82158aa9774bf8054df41992180"},"score":5.5,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker-publish.yml:24","Warn: no topLevel permission defined: .github/workflows/docker-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/go.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/docker-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-publish.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/docker-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/go.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/go.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/yomorun/yomo/release.yaml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:13: pin your Docker image by updating alpine:3.17 to alpine:3.17@sha256:8fc3dacfb6d69da8d44e42390de777e48577085db99aa4e4af35f483eb08b989","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.20.6 not signed: https://api.github.com/repos/yomorun/yomo/releases/227397478","Warn: release artifact v1.20.5 not signed: https://api.github.com/repos/yomorun/yomo/releases/224213569","Warn: release artifact v1.20.4 not signed: https://api.github.com/repos/yomorun/yomo/releases/224042535","Warn: release artifact v1.20.3 not signed: https://api.github.com/repos/yomorun/yomo/releases/222036999","Warn: release artifact v1.20.2 not signed: https://api.github.com/repos/yomorun/yomo/releases/220580512","Warn: release artifact v1.20.6 does not have provenance: https://api.github.com/repos/yomorun/yomo/releases/227397478","Warn: release artifact v1.20.5 does not have provenance: https://api.github.com/repos/yomorun/yomo/releases/224213569","Warn: release artifact v1.20.4 does not have provenance: https://api.github.com/repos/yomorun/yomo/releases/224042535","Warn: release artifact v1.20.3 does not have provenance: https://api.github.com/repos/yomorun/yomo/releases/222036999","Warn: release artifact v1.20.2 does not have provenance: https://api.github.com/repos/yomorun/yomo/releases/220580512"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker-publish.yml:20"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-fv92-fjc5-jj9h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/4feedb857ab8d82158aa9774bf8054df41992180/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T19:26:15.826Z","repository_id":36950090,"created_at":"2025-08-15T19:26:15.826Z","updated_at":"2025-08-15T19:26:15.826Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31308448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["a2a-protocol","chatgpt","claude-code","cursor","distributed-cloud","function-calling","geodistributedsystems","low-latency","mcp","openai","quic","realtime","serverless","stream-processing","yomo"],"created_at":"2024-08-01T02:01:04.687Z","updated_at":"2026-04-02T14:54:40.397Z","avatar_url":"https://github.com/yomorun.png","language":"Go","funding_links":[],"categories":["Go","Openai","Table of Contents","A01_文本生成_文本对话","📚 Projects (1974 total)","其他相关","chatgpt","Rust","SDK, Libraries, Frameworks","Edge/Applications","Agent Categories","基础设施"],"sub_categories":["Streaming Library","大语言对话模型及数据","MCP Servers","Golang library, sdk or frameworks","IoT","\u003ca name=\"Unclassified\"\u003e\u003c/a\u003eUnclassified"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"200px\" height=\"200px\" src=\"https://blog.yomo.run/static/images/logo.png\" /\u003e\n\u003c/p\u003e\n\n# YoMo ![Go](https://github.com/yomorun/yomo/workflows/Go/badge.svg) [![codecov](https://codecov.io/gh/yomorun/yomo/branch/master/graph/badge.svg?token=MHCE5TZWKM)](https://codecov.io/gh/yomorun/yomo) [![Discord](https://img.shields.io/discord/770589787404369930.svg?label=discord\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.gg/RMtNhx7vds)\n\nYoMo is an open-source LLM Function Calling Framework for building scalable and ultra-fast AI Agents.\n💚 We care about: **Empowering Exceptional Customer Experiences in the Age of AI**\n\nWe believe that seamless and responsive AI interactions are key to delivering outstanding customer experiences. YoMo is built with this principle at its core, focusing on speed, reliability, and scalability.\n\n\n## 🌶 Features\n\n|    | **Features** |    |\n| -- | ------------ | -- |\n| ⚡️ | **Low-Latency MCP** | Guaranteed by implementing atop the [QUIC Protocol](https://datatracker.ietf.org/wg/quic/documents/). Experience significantly faster communication between AI agents and MCP server. |\n| 🔐  | **Enhanced Security** | TLS v1.3 encryption is applied to every data packet by design, ensuring robust security for your AI agent communications. |\n| 🚀  | **Strongly-Typed Language** | Build robust AI agents with complete confidence through type-safe function calling, enhanced error detection, and seamless integration capabilities. Type safety prevents runtime errors, simplifies testing, and enables IDE auto-completion. Currently support TypeScript and Go. |\n| 📸  | **Effortless Serverless DevOps** | Streamline the entire lifecycle of your LLM tools, from development to deployment. Significantly reduces operational overhead, allowing you to focus exclusively on creating innovative AI agent functionalities. |\n| 🌎  | **Geo-Distributed Architecture** | Bring AI inference and tools closer to your users with our globally distributed architecture, resulting in significantly faster response times and a superior user experience for your AI agents. |\n\n## 🚀 Getting Started\n\nLet's build a simple AI agent with LLM Function Calling to provide weather information:\n\n### Step 1. Install CLI\n\n```bash\ncurl -fsSL https://get.yomo.run | sh\n```\n\nVerify the installation:\n\n```bash\nyomo version\n```\n\n### Step 2. Start the server\n\nCreate a configuration file `my-agent.yaml`:\n\n```yaml\nname: my-agent\nhost: 0.0.0.0\nport: 9000\n\nauth:\n  type: token\n  token: SECRET_TOKEN\n\nbridge:\n  ai:\n    server:\n      addr: 0.0.0.0:9000 ## OpenAI API compatible endpoint\n      provider: vllm     ## llm to use\n\n    providers:\n      vllm:\n        api_endpoint: http://127.0.0.1:8000/v1\n        model: meta-llama/Llama-4-Scout-17B-16E-Instruct\n\n      ollama:\n        api_endpoint: http://localhost:11434\n```\n\nLaunch the server:\n\n```sh\nyomo serve -c my-agent.yaml\n```\n\n### Step 3. Implement the LLM Function Calling\n\nCreate a type-safe function that retrieves weather data:\n\n```typescript\nexport const description = 'Get the current weather for `city`'\n\nexport type Argument = {\n  /**\n   * The name of the city to be queried\n   */\n  city: string;\n}\n\nexport async function handler(args: Argument) {\n  // Simulate a weather API call\n  let temperature = Math.floor(Math.random() * 41)\n  // Return the result to LLM\n  return { \n    city: args.city, \n    temperature: temperature,\n    feels_like: 11.9,\n    rain: false,\n  }\n}\n```\n\nFinished, now, let's run it:\n\n```bash\n$ yomo run -n get-weather\n```\n\n### Done, let's have a try\n\n```sh\n$ curl http://127.0.0.1:9000/v1/chat/completions \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Bearer SECRET_TOKEN\" \\\n-d '{\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"I am going for a hike on the Yarra Bend Park Loop. What should I wear?\"\n    }\n  ],\n  \"stream\": false\n}'\n```\n\nYou'll receive a helpful response like this:\n\n```\nFor your hike on the Yarra Bend Park Loop, the current weather is clear with a temperature of approximately 12.3°C (feels like 11.9°C). \n\nHere are some suggestions on what to wear: \n\n1. **Layers**: Start with a base layer such as a moisture-wicking t-shirt. Add a light sweater or fleece for warmth since it can be chilly. \n2. **Jacket**: Bring a lightweight jacket or windbreaker to keep warm, especially as it is breezy with a southeast wind at 6 km/h with gusts up to 14 km/h. \n3. **Pants**: Comfortable hiking pants or leggings will be suitable. \n4. **Footwear**: Wear sturdy hiking boots or shoes with good grip. \n5. **Accessories**: Consider a hat or beanie for warmth, and bring gloves if you tend to get cold easily. \n6. **Backpack**: Carry a small backpack with water, snacks, and any additional layers you might need. \n\nSince there is **no rain** expected, you shouldn't need waterproof gear, but it's always wise to check the latest forecast before heading out. Enjoy your hike!\n```\n\n### Explore More Examples\n\nCheck out our [Servereless LLM Function Calling Examples](https://github.com/yomorun/llm-function-calling-examples) for more use cases and inspiration.\n\n## 📚 Documentation\n\nRead more about YoMo on [yomo.run](https://yomo.run/).\n\n## 🎯 Focuses on Geo-distributed AI Inference Infra\n\nIt’s no secret that today’s users want instant AI inference, every AI \napplication is more powerful when it response quickly. But, currently, when we\ntalk about `distribution`, it represents **distribution in data center**. The AI model is\nfar away from their users from all over the world.\n\nIf an application can be deployed anywhere close to their end users, solve the\nproblem, this is **Geo-distributed System Architecture**:\n\n\u003cimg width=\"580\" alt=\"yomo geo-distributed system\" src=\"https://user-images.githubusercontent.com/65603/162367572-5a0417fa-e2b2-4d35-8c92-2c95d461706d.png\"\u003e\n\n## 🦸 Contributing\n\nFirst off, thank you for considering making contributions. It's people like you\nthat make YoMo better. There are many ways in which you can participate in the\nproject, for example:\n\n- File a\n  [bug report](https://github.com/yomorun/yomo/issues/new?assignees=\u0026labels=bug\u0026template=bug_report.md\u0026title=%5BBUG%5D).\n  Be sure to include information like what version of YoMo you are using, what\n  your operating system is, and steps to recreate the bug.\n- Suggest a new feature.\n- Read our\n  [contributing guidelines](https://github.com/yomorun/yomo/blob/master/CONTRIBUTING.md)\n  to learn about what types of contributions we are looking for.\n- We have also adopted a\n  [code of conduct](https://github.com/yomorun/yomo/blob/master/CODE_OF_CONDUCT.md)\n  that we expect project participants to adhere to.\n\n## License\n\n[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyomorun%2Fyomo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyomorun%2Fyomo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyomorun%2Fyomo/lists"}