Open-source project
YuehaiTeam/cocogoat avatar
YuehaiTeam/cocogoat

cocogoat reads Genshin achievement screenshots in the browser

A toolbox for Genshin Impact 100% running in browser. 纯网页端的原神工具箱,保证每一行代码都是熬夜加班打造。

1,149 stars75 forksVueBSD-3-Clause

At a glance

What is it?
The cocogoat project is a browser-only toolbox for Genshin Impact that uses PaddleOCR and onnxruntime to recognise achievement images locally, with a companion client of about 440 KB that simulates the clicks the browser cannot do. It is written in TypeScript and Vue, and it is BSD-3 licensed and lets you switch off crash reports.
Who is it for?
Adopt cocogoat if you want achievement recognition that runs entirely in your browser, since the OCR is local and the project states that data is only sent after you are prompted. Do not adopt it expecting the achievement database to be complete, since the feature list marks further work as still in development.
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 31 days ago.
What is it written in?
Mainly Vue, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The OCR runs on your machine, not on a server

The project is described as a toolbox for Genshin Impact running 100% in the browser, and the achievement recognition feature is the part that makes that claim concrete. It uses PaddleOCR and onnxruntime to recognise the text on screen locally, in the web page, with no round trip to a server for the recognition step. The feature list also includes support for scanning screenshots on a phone, and support for working alongside a client of only 440 KB that simulates the clicks. The client is a separate open source project, cocogoat-control, and the reasoning for its existence is stated in the FAQ: the browser cannot implement the functions that need simulated keyboard and mouse operations, so those features are delegated to a small native helper rather than reimplemented in the page.

The privacy answer is specific, not a slogan

One of the FAQ entries asks whether the tool sends your game data to the server, and the answer is a mechanism rather than a reassurance. No game data is sent, and any data that does need to be sent is preceded by a prompt, with the example given being feedback. Crash reports are called out separately, and the answer says they can be turned off in the settings. That distinction is the useful part. A tool that does local OCR still has reasons to talk to a server, such as updating the achievement data or collecting crash reports, and the project is explicit that those paths exist and that the first one asks first. The achievement management side reads a resource file, and there is an `update-data` script that refreshes it, so the data set is maintained centrally while the recognition stays local.

Achievement management is filtering and explanation

The second feature area, achievement management, is described in three capabilities. You can filter achievements by category, by task and by commission. You can look at the trigger condition of an achievement, and where the trigger is a task, the task name is shown. That second point is the one that makes the tool useful rather than merely a checklist, because in Genshin a large share of achievements are hidden and the conditions are what you need in order to know what you are still looking for. The feature list closes with a note that more is still in development, so the set of supported achievement types is a moving target. The homepage carries a status badge pointing at cocogoat.work, and the project name translates to something like a goat returning, which is a piece of the project's wordplay rather than a technical detail.

Why the client needs administrator rights

The FAQ explains the administrator requirement, and the answer is a property of the game rather than of the tool. Genshin Impact runs with administrator rights, so if the helper program runs with ordinary permissions it cannot perform the simulated clicks and scroll operations. That is a direct consequence of the game's own elevation, and it means the client is a privileged program on your machine, which is the main thing to weigh before installing it. The answer to why the project is not client-only is the mirror image: the web version works in environments where you do not want simulated clicking and risk of detection, on non-Windows computers, and possibly on a phone, which is listed as still in development. The two paths exist because each has a failure mode the other does not, and the project keeps both.

Two bundlers, one codebase

The development section recommends three commands and says the toolchain can be switched manually with Vite or webpack, with Vite recommended for development and webpack for testing before deployment. The package manifest makes the duplication concrete. There is a `serve` script that runs Vite and a separate `serve:vite`, a `build` that runs the Vue CLI service and a separate `build:vite`, and single-file builds in both flavours, with the singlefile variants producing one HTML file you can open directly. There is also a skeleton build, `build:skel`, using its own Vite config, and a `loader/` directory and a `sw/` directory at the root, which points to a service worker and a loading layer. The dependency list is long and mostly front end, with Element Plus for the interface, Sentry for error reporting, html2canvas for capturing the screen, exceljs and jszip for exporting data, comlink and mitt for messaging between workers, and dayjs for dates.

The repository shape and the data pipeline

The top level of the repository is a Vue application with a mix of tooling that reveals the history. There is a `vue.config.js` for the Vue CLI, a `vite.config.mjs` and a `vite.skel.config.mjs`, a `babel.config.js`, an `.swcrc`, a `scripts/` directory holding the data update script, a `loader/` directory, a `sw/` directory, a `patches/` directory for patched dependencies, a `resources.json` that likely carries the static data, and a `public/` directory. The package manifest also carries a `postinstall` hook that runs `git submodule update --init --remote --depth 1`, which tells you the project pulls parts of itself as submodules, and the `.gitmodules` file is at the root to match. The data update script runs through ts-node with the ESM loader, which is a detail that matters if you fork the project and want to refresh the achievement data yourself. The licence is BSD-3, and the last push to the main branch was on 2026-09-22.

Editorial conclusion

Adopt cocogoat if you want achievement recognition that runs entirely in your browser, since the OCR is local and the project states that data is only sent after you are prompted. Do not adopt it expecting the achievement database to be complete, since the feature list marks further work as still in development. Verify first which features need the companion client, because the browser cannot simulate input on its own, and note that the client requires administrator rights to act on the game, which is a real cost to weigh before you install it.

Frequently asked questions

What is cocogoat?

It is a toolbox for Genshin Impact that runs entirely in the browser, with achievement recognition and achievement management as its two feature areas, and further work still in development. The project is written in TypeScript and Vue and is BSD-3 licensed.

How does cocogoat recognise achievements?

It uses PaddleOCR and onnxruntime to recognise the achievement text locally in the web page, and it also supports scanning screenshots on a phone. Some features need a companion client of about 440 KB that simulates clicks, because the browser cannot do that itself.

Does cocogoat send my game data to a server?

No. Anything that does need to be sent is preceded by a prompt, and crash reports can be turned off in the settings. The project also has a separate open source client, cocogoat-control, for the features that need simulated input.

Why does the cocogoat client need administrator rights?

Because Genshin Impact itself runs with administrator rights, so a helper running with ordinary permissions cannot perform the simulated clicks and scroll operations the game needs.

How do I build cocogoat from source?

With pnpm. The recommended commands are `pnpm serve` for local development with Vite, `pnpm build` for a webpack bundle, and `pnpm build:singlefile` for a single file build, and the toolchain can be switched between Vite and webpack manually.

Official sources

  1. Issues
  2. License: BSD-3-Clause
  3. Project website
  4. README
  5. YuehaiTeam/cocogoat on GitHub
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/yuehaiteam-cocogoat.svg)](https://hysenlabs.com/projects/yuehaiteam-cocogoat)

Was this useful?