Tars ships the RPC runtime, the name service and the admin plane, and its tags live somewhere else
Tars is a high-performance RPC framework based on name service and Tars protocol, also integrated administration platform, and implemented hosting-service via flexible schedule.
At a glance
- What is it?
- Tars is a Linux Foundation RPC framework built on a name service and the Tars protocol, with an administration platform around it and the runtime used inside Tencent since 2008. The awkward part for anyone adopting it now is versioning: from 2.1.0 the framework tag stopped appearing in this repository, so its newest releases are from March 2020 while commits continue.
- Who is it for?
- Adopt Tars when you are prepared to run a service mesh with its own naming, monitoring, statistics and configuration plane, and when your language is one of C++, Java, Nodejs, PHP or Go. Do not adopt it expecting a single repository to tell you which framework version you are on, because the README states the framework tag moved to the tarsframework repository at version 2.1.0 and this one stops at tags from 2020-03-15.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 119 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- TarsCloud/Tars10,080 ★ · -1
| Repository | 2026-09-22 | 2026-11-14 |
|---|---|---|
| TarsCloud/Tars | 10.1k | 10.1k |
-1 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Name service and Tars protocol sit under an administration platform
Tars is more than a serializer and a transport. The pieces the README names are an extensible protocol for encoding and decoding, a high-performance RPC communication framework, a name service, monitoring, statistics and configuration, plus an administration platform, with hosting-service handled by flexible scheduling.
The name service is the load-bearing piece. Callers address a service name rather than a host and port, and something in the platform maps that name to a machine. That is what makes the flexible schedule meaningful, and it is also what you inherit as an operational dependency: an RPC call that worked yesterday depends on a registry being reachable today.
The framework has been in use at Tencent since 2008, where it is also called TAF, short for Total Application Framework, and the README describes it as running across hundreds of business units inside the company, with services developed on TAF running on 16 thousands of machines. Treat that figure as the project's own statement about its own scale rather than as something you can check from the code.
Mac support starts at 2.1.0, so the 1.9.0 tag rules it out
Platform support is listed in three lines, and one of them carries a version gate. Linux carries no condition. Mac is written as `Mac(>=2.1.0 support)`, meaning a build older than 2.1.0 has no Mac support by the project's own statement. Windows is written as `Windows (>= Windows 7)`.
That gate has a consequence inside this repository, because the newest tags here are v2.1.0 and v2.0.0, both dated 2020-03-15, followed by v1.9.0 dated 2020-01-12. A developer who picks the 1.9.0 tag is picking a version the same README describes as pre-Mac.
The Windows line is the loosest statement in the section. It names a minimum operating system and says nothing about which Windows versions were tested, which architectures are supported, or what the framework does there. If Windows is your target, that gap has to be closed with your own testing before you commit a team to it.
The supported-languages list counts Go, the introduction paragraph does not
The README answers the same question twice with different results. The Supported languages section lists C++, Java, Nodejs, PHP and Go. A few paragraphs earlier, the introduction says Tars supports C++, Java, Nodejs and PHP for now, with no mention of Go.
The rest of the file points at Go. The submodule table has a `go` row for the Go language framework RPC source implementation, and `go` is a top-level directory in the repository. So the language exists in the tree and in the list, and is missing from one paragraph of prose.
For a reader deciding whether a Go service can join the mesh, that inconsistency is the whole answer: the code is there, the documentation contradicts itself once, and nothing in the README explains which artifacts a Go client should depend on or which version they move at. The version rules in the next section apply to exactly this kind of component.
From 2.1.0 the framework tag moved to the tarsframework repository
Version management is the sharpest thing in this README, because it changes where you look for a version number. Tars is composed of many modules scattered across many repositories, and the basic framework version and the language versions develop independently. From version 2.1.0, the framework version tag is printed on the tarsframework repository and is no longer reflected in the tars repository. Each component carries its own version, and when there is a version dependency specification each component keeps its own version.
The release list in this repository shows the result. v2.0.0 and v2.1.0 were both tagged on 2020-03-15, minutes apart, and v1.9.0 on 2020-01-12. Nothing since. The last push to `master` was on 2026-07-18, so work continues while the tag list here stands still.
For an adopter, the consequence is concrete: the newest release visible in this repository tells you nothing about the current framework version. You read the tarsframework repository for that, and you read the language repository for each client you depend on. Three lookups instead of one.
Installation is three documentation links, and no command in this repository
There is no installation command in the README, and none should be improvised. What it offers is a sequence: new users are pointed at the installation documentation, first-time deployers at the source build page, and anyone who wants a container at the Docker page. All three live in the TarsDocs_en documentation repository rather than here.
The repository root does hold the deployment machinery: `tars-deploy-framework.sh`, `tars-deploy-tars.sh`, `tars-latest-deploy-framework.sh`, `tars-latest-deploy-tars.sh` and `tag.sh`, alongside a `docker` directory. The README never mentions any of those five files, so nothing here tells you what they assume, what they overwrite, or which one a fresh install should use.
So the first thing to verify is not a version but a procedure: read the source build page and the script you intend to run before either touches a machine. The four deploy scripts differ by name alone in what this file reveals.
A .gitmodules at the root means a plain clone leaves the language directories empty
The submodule table describes eight pieces and their roles. `framework` holds the source of the C++ basic service framework, `cpp` the C++ RPC implementation, `tup` the tup group protocol implementation in each language, `web` the management web source, and one row each for `java`, `go`, `nodejs` and `php` covering the language RPC implementations.
A `.gitmodules` file sits at the repository root next to `.gitattributes` and `.gitignore`, which suggests some of these directories are git submodules; check whether `framework/` and the language directories are populated after a plain clone.
Each of those components versions separately, per the README's own rule, so an initialized submodule is also a version decision rather than just a checkout.
Six years of pushes after the newest tag, and a license link into another repository
Set the two dates next to each other. The newest release tags in this repository are from 2020-03-15. The last push was on 2026-07-18. The repository is not archived, so nothing has been shut down, and the README explains the tag gap as deliberate: from 2.1.0 the framework tag belongs to another repository.
That explanation accounts for the framework tag and not for the client libraries. A Go or PHP team looking for the newest version of its RPC implementation still reads the tag list here, and that list ends in 2020. If your build resolves versions by tag rather than by branch, this repository gives you nothing current to resolve against.
The license is BSD-3-Clause. A `LICENSE` file sits at the root, and the README points at a LICENSE.md inside the TarsDocs_en repository, so the text you are agreeing to sits outside the source tree you cloned. Read that file before shipping anything built on it.
Editorial conclusion
Adopt Tars when you are prepared to run a service mesh with its own naming, monitoring, statistics and configuration plane, and when your language is one of C++, Java, Nodejs, PHP or Go. Do not adopt it expecting a single repository to tell you which framework version you are on, because the README states the framework tag moved to the tarsframework repository at version 2.1.0 and this one stops at tags from 2020-03-15. Verify before anything else that the language modules your build links against have their own version, since the README says the framework version and the language versions develop independently and each component carries its own version.
Frequently asked questions
What is Tars and what does TAF stand for?
Tars, also called TAF for Total Application Framework, is an RPC framework built on a name service and the Tars protocol, with an administration platform, monitoring, statistics and configuration, and hosting-service handled by flexible scheduling. It is a Linux Foundation project and has been used at Tencent since 2008.
Which languages does Tars support?
The Supported languages section lists C++, Java, Nodejs, PHP and Go, while the introduction paragraph names only C++, Java, Nodejs and PHP. The submodule table and the top-level directory both include go, so the Go implementation is present in the tree.
Which operating systems does Tars run on?
The README lists Linux with no condition, Mac with the note that support starts at version 2.1.0, and Windows from Windows 7 onward. The Windows entry names a minimum version only and states nothing about which versions were tested.
Where do I install Tars from?
The README carries no installation command and points instead at three documentation pages, one for installation, one for a first source deploy and one for Docker, all in the TarsDocs_en repository. The root of this repository holds tars-deploy-framework.sh, tars-deploy-tars.sh and their tars-latest counterparts, plus tag.sh, none of which the README describes.
How is Tars versioned across its modules?
Modules live in separate repositories and the basic framework version and the language versions develop independently, each component carrying its own version. From version 2.1.0 the framework version tag is printed on the tarsframework repository and is no longer reflected in the tars repository, which is why the newest releases here are v2.0.0 and v2.1.0 from 2020-03-15.
What license does Tars use?
BSD-3-Clause. A LICENSE file is present at the root of the repository, and the README points to the license text through a LICENSE.md in the TarsDocs_en repository rather than through the file in the source tree.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/tarscloud-tars)Star history chart for your README
[](https://hysenlabs.com/projects/tarscloud-tars)Was this useful?