[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10304":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},10304,"fern","fern-api\u002Ffern","fern-api","Input OpenAPI. Output SDKs and Docs.","https:\u002F\u002Fbuildwithfern.com",null,"TypeScript",3662,323,16,232,0,4,14,55,18,29.53,"Apache License 2.0",false,"main",[26,27,28,29,30],"api","docs-as-code","docs-generator","openapi","sdk-generator","2026-06-12 02:02:19","\u003Cbr\u002F>\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.buildwithfern.com\u002F?utm_source=github&utm_medium=readme&utm_campaign=fern&utm_content=logo\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"\u002Ffern\u002Fimages\u002Flogo-white.svg\">\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"\u002Ffern\u002Fimages\u002Flogo-primary.svg\">\n      \u003Cimg alt=\"logo\" src=\"\u002Ffern\u002Fimages\u002Flogo-primary.svg\" height=\"80\" align=\"center\">\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003Cbr\u002F>\n\n\u003Cbr\u002F>\n\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Ffern-api)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Ffern-api)\n[![2023 Y Combinator Startup](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FY%20Combinator-2023-orange)](https:\u002F\u002Fwww.ycombinator.com\u002Fcompanies\u002Ffern)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-blue)\n\n[![Documentation](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRead%20our%20Docs-black?logo=book)](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fhome?utm_source=fern-api\u002Ffern\u002Freadme-read-our-documentation)\n[![Book a demo](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBook%20a%20demo-fcfcfd)](https:\u002F\u002Fbuildwithfern.com\u002Fbook-demo?utm_source=fern-github-readme)\n[![Start for free](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FStart%20for%20free-008700)](https:\u002F\u002Fdashboard.buildwithfern.com\u002Fsign-up?redirect_on_login=%2Fget-started&utm_source=fern-github-readme)\n\n\u003C\u002Fdiv>\n\n# 🌿 What is Fern?\n\nFern is a platform that transforms your API definitions into production-ready SDKs and beautiful documentation in minutes. \n\nWith Fern, you can offer your users:\n\n- 🧩 **Type-safe SDKs** in multiple languages, including TypeScript, Python, Java, Go, Ruby, PHP, and C#\n- 📘 **Developer documentation** featuring an interactive UI and auto-generated API + SDK references\n- ✨ **AI Search** powered by an assistant trained on your docs, APIs, and SDKs that can instantly answer a developer's questions\n\nFern supports leading API specifications including OpenAPI (REST, Webhooks), AsyncAPI (WebSockets), Protobuf (gRPC), and OpenRPC.\n\n\u003Cdiv align=\"center\">\n    \u003Ca href=\"\u002Ffern\u002Fimages\u002Foverview-dark.png\" target=\"_blank\">\n        \u003Cpicture>\n            \u003Csource srcset=\"\u002Ffern\u002Fimages\u002Foverview-dark.png\" media=\"(prefers-color-scheme: dark)\">\n            \u003Csource srcset=\"\u002Ffern\u002Fimages\u002Foverview-light.png\" media=\"(prefers-color-scheme: light)\">\n            \u003Cimg src=\"\u002Ffern\u002Fimages\u002Foverview-light.png\" width=\"700\" alt=\"Overview Diagram\">\n        \u003C\u002Fpicture>\n    \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## 🌿 SDKs\n\nThe Fern platform is available via a command line interface (CLI) and requires Node 18+. To install it, run:\n\n```bash\nnpm install -g fern-api\n```\n\nInitialize Fern with your OpenAPI spec:\n\n```bash\nfern init --openapi .\u002Fpath\u002Fto\u002Fopenapi.yml\n# or\nfern init --openapi https:\u002F\u002Flink.buildwithfern.com\u002Fplantstore-openapi\n```\n\nYour directory should look like the following:\n\n```yaml\nfern\u002F\n├─ fern.config.json\n├─ generators.yml # generators you're using\n└─ openapi\u002F\n  └─ openapi.json # your openapi document\n```\n\nFinally, to invoke the generator, run:\n\n```bash\nfern generate\n```\n\n🎉 Once the command completes, you'll see your SDK in `\u002Fgenerated\u002Fsdks\u002Ftypescript`.\n\n## 🌿 API Documentation\n\nFern can also build and host a documentation website with an auto-generated API reference. Write additional pages in markdown and have them versioned with git. \nSearch, SEO, dark mode, and popular components are provided out-of-the-box. Plus, you can customize the colors, font, logo, and domain name.\n\nCheck out docs built with Fern:\n\n- [elevenlabs.io\u002Fdocs](https:\u002F\u002Felevenlabs.io\u002Fdocs)\n- [launchdarkly.com\u002Fdocs](https:\u002F\u002Flaunchdarkly.com\u002Fdocs\u002Fhome)\n- [docs.hume.ai](https:\u002F\u002Fdocs.hume.ai\u002F)\n\nGet started [here](https:\u002F\u002Fgithub.com\u002Ffern-api\u002Fdocs-starter).\n\n## 🌿 Generators\n\nGenerators are processes that take your API Definition as input and output artifacts (SDKs, Server boilerplate, etc.). To add a generator, run `fern add \u003Cgenerator id>`.\n\n### SDK Generators\n\n| Generator ID                       | Latest Version                                                                                    | Changelog                                                                                                      |\n| ---------------------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| `fernapi\u002Ffern-typescript-sdk`      | ![Typescript Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-typescript-sdk)      | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Ftypescript\u002Fchangelog)                               |\n| `fernapi\u002Ffern-python-sdk`          | ![Python Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-python-sdk)              | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fpython\u002Fchangelog)                                   |\n| `fernapi\u002Ffern-java-sdk`            | ![Java Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-java-sdk)                  | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fjava\u002Fchangelog)                                     |\n| `fernapi\u002Ffern-ruby-sdk`            | ![Ruby Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-ruby-sdk)                  | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fruby\u002Fchangelog)                                     |\n| `fernapi\u002Ffern-go-sdk`              | ![Go Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-go-sdk)                      | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fgo\u002Fchangelog)                                       |\n| `fernapi\u002Ffern-csharp-sdk`          | ![C# Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-csharp-sdk)                  | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fcsharp\u002Fchangelog)                                   |\n| `fernapi\u002Ffern-php-sdk`             | ![PHP Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-php-sdk)                    | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fphp\u002Fchangelog)                                      |\n| `fernapi\u002Ffern-swift-sdk`           | ![Swift Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-swift-sdk)                | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Fswift\u002Fchangelog)                                    |\n| `fernapi\u002Ffern-rust-sdk`            | ![Rust Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-rust-sdk)                  | [Changelog](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fsdks\u002Fgenerators\u002Frust\u002Fchangelog)                                     |\n\n### Spec Generators\n\nFern's spec generators can output an OpenAPI spec.\n\n> **Note**: The OpenAPI spec generator is primarily intended for Fern Definition users. This prevents lock-in so that one can always export to OpenAPI.\n\n| Generator ID           | Latest Version                                                                     | Changelog                                              |\n| ---------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------ |\n| `fernapi\u002Ffern-openapi` | ![OpenAPI Generator Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Ffernapi\u002Ffern-openapi) | [versions.yml](.\u002Fgenerators\u002Fopenapi\u002Fversions.yml)      |\n\n## 🌿 CLI Commands\n\nHere's a quick look at the most popular CLI commands. View the documentation for [all CLI commands](https:\u002F\u002Fbuildwithfern.com\u002Flearn\u002Fcli-api\u002Fcli-reference\u002Fcommands).\n\n`fern init`: adds a new starter API to your repository.\n\n`fern check`: validate your API definition and Fern configuration.\n\n`fern generate`: run the generators specified in `generators.yml` in the cloud.\n\n`fern generate --local`: run the generators specified in `generators.yml` in docker locally.\n\n`fern add \u003Cgenerator>`: include a new generator in your `generators.yml`. For example, `fern add fern-python-sdk`.\n\n## Inspiration\n\nFern is inspired by internal tooling built to enhance the developer experience. We stand on the shoulders of giants. While teams were responsible for building the following tools, we want to give a shout out to Mark Elliot (creator of Conjure at Palantir), Michael Dowling (creator of Smithy at AWS), and Ian McCrystal (creator of Stripe Docs).\n\n## Community\n\n[Join our Slack!](https:\u002F\u002Fbuildwithfern.com\u002Fslack) We are here to answer questions and help you get the most out of Fern.\n\n## Contributing\n\nWe welcome community contributions. For guidelines, refer to our [CONTRIBUTING.md](\u002FCONTRIBUTING.md). To contribute to our documentation, refer to our [docs](https:\u002F\u002Fgithub.com\u002Ffern-api\u002Fdocs) repo.\n\n### Development Environment\n\nThis repository uses [DevBox](https:\u002F\u002Fwww.jetify.com\u002Fdevbox) for reproducible development environments. DevBox provides cross-platform support (Mac, Linux, Windows via WSL) with exact version pinning based on Nix.\n\nTo get started:\n\n```bash\n# Install DevBox (https:\u002F\u002Fwww.jetify.com\u002Fdevbox\u002Fdocs\u002Finstalling_devbox\u002F)\ncurl -fsSL https:\u002F\u002Fget.jetify.com\u002Fdevbox | bash\n\n# Enter the development environment\ndevbox shell\n```\n\nDevBox automatically installs all required dependencies including Node.js, pnpm, Go, Python, Poetry, JDK, and buf with pinned versions matching CI.\n\n![Fern Contributors](https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=fern-api\u002Ffern)\n","Fern 是一个将 API 定义转换为生产就绪的 SDK 和精美文档的平台。其核心功能包括生成多种语言（如 TypeScript、Python、Java 等）的类型安全 SDK，以及提供交互式 UI 的开发者文档和由 AI 助手驱动的搜索功能。Fern 支持主流的 API 规范，例如 OpenAPI、AsyncAPI、Protobuf 和 OpenRPC。通过简单的 CLI 命令，用户可以快速初始化项目并生成所需的 SDK 和文档。此工具非常适合需要快速开发和维护 API 及其相关文档的场景，能够显著提高开发效率和用户体验。",2,"2026-06-11 03:27:41","top_topic"]