Cherry Studio Cherry Studio DOCS
Download
Documentation

Install or use the web

Cherry Studio runs on the web with nothing to install, or you can download the app for the full set of features.

AVAILABLE NOW
Web version

Go to app.cherrystudio.io

COMING SOON
Desktop app

Download the app here

What is a workspace

The first time you open Cherry Studio — on the web or in the app — you pick one root folder. Everything you make is stored there, on your own computer. Cherry Studio never uploads your data to a cloud or moves it off your machine.

If you remove the app or lose the connection to your workspace, just choose that same folder again and carry on working.

The .civ and .cib formats

Cherry Studio exports files in the .civ (Cherry Interactive Video) and .cib (Cherry Interactive Book) formats. Open a file in Playground, or import it into My Books & Notes to play it.

Protect your material

1 Passcode At export time you can turn on a passcode. With it on, a reader has to type the passcode before the file will open.
2 Domain lock When you want the export to play only on your own site, encrypt the content with your private key, enter the domains you want to lock it to, then either export to HTML right in the app, or export a .civ / .cib file and download an SDK built from that same key and domain list. Your file will then only play through your own SDK.
The two are not mutually exclusive — you can set a passcode and encrypt the content with your key at the same time.

Cherry Player SDK

Cherry Player SDK is the default SDK: embed it on your own site and it plays public .cib and .civ files. A public file means one exported without being encrypted by the private key from Protect your material.

<!-- default SDK: no key, plays public files -->
<script src="https://cdn.cherrystudio.io/cherry-player.js"></script>
Cherry.player({
  src: '/books/onboarding.cib', // or https://yourdomain/path/to/file.civ
  mount: '#reader',
  lang: 'vi'
});

Getting quiz results

When a reader submits a quiz inside the book, the SDK hands the result to your page — the score, the points and every answer. Cherry Studio stores none of it, and sends nothing outside your own page. Only exam mode produces one; practice mode closes no attempt.

const reader = Cherry.player({
  src: '/books/unit-3.cib', mount: '#reader',
  onSubmit: (s) => fetch('/api/results', { method: 'POST', body: JSON.stringify(s) })
});
reader.getSubmission(); // the latest one, or null
reader.getSubmissions(); // an array of every submission
// or listen instead of passing a callback
document.addEventListener('cherry:submit', (e) => post(e.detail));
// what a submission carries
{
  book: { title }, quiz: { id, title }, attempt: 1,
  score, total, points, pointsTotal,
  submittedAt: '2026-08-21T…Z', auto: false,
  answers: [{ id, n, kind, question, answer, correct, points, pointsEarned }]
}

For a paragraph answer the result comes back with correct = null — the grader skips scoring that question.

Changelog

2026.08
First launch — web app