{"id":24318215,"url":"https://github.com/actually-colab/desktop","last_synced_at":"2025-09-27T03:31:19.072Z","repository":{"id":50045163,"uuid":"334707332","full_name":"actually-colab/desktop","owner":"actually-colab","description":"Main web application for @actually-colab, a real time collaborative Jupyter Kernel based editor built by @jtaylorchang and @baileytincher at the University of @Illinois at Urbana-Champaign","archived":false,"fork":false,"pushed_at":"2021-06-05T15:29:29.000Z","size":6632,"stargazers_count":12,"open_issues_count":72,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-29T10:29:04.606Z","etag":null,"topics":["colab","collaboration","jupyter","jupyter-notebook","kernel","react","rtc"],"latest_commit_sha":null,"homepage":"https://app.actuallycolab.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/actually-colab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"actually-colab","patreon":"actuallycolab","open_collective":"actuallycolab"}},"created_at":"2021-01-31T16:55:17.000Z","updated_at":"2023-05-02T05:57:55.000Z","dependencies_parsed_at":"2022-08-12T20:51:02.093Z","dependency_job_id":null,"html_url":"https://github.com/actually-colab/desktop","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actually-colab%2Fdesktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actually-colab%2Fdesktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actually-colab%2Fdesktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actually-colab%2Fdesktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/actually-colab","download_url":"https://codeload.github.com/actually-colab/desktop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234376967,"owners_count":18822424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["colab","collaboration","jupyter","jupyter-notebook","kernel","react","rtc"],"created_at":"2025-01-17T14:37:35.873Z","updated_at":"2025-09-27T03:31:13.605Z","avatar_url":"https://github.com/actually-colab.png","language":"TypeScript","readme":"\u003cimg src=\"https://raw.githubusercontent.com/actually-colab/graphics/master/header/header.png\" width=\"100%\" /\u003e\n\n[![Netlify Status](https://api.netlify.com/api/v1/badges/8dd233ec-aeab-42f6-b94c-8966c12d2ce7/deploy-status)](https://app.netlify.com/sites/actually-colab-app/deploys) [![Validation](https://github.com/actually-colab/desktop/actions/workflows/validation.yml/badge.svg)](https://github.com/actually-colab/desktop/actions/workflows/validation.yml) [![Bundle Reporter](https://github.com/actually-colab/desktop/actions/workflows/bundle-reporter.yml/badge.svg)](https://github.com/actually-colab/desktop/actions/workflows/bundle-reporter.yml)\n\n![GitHub](https://img.shields.io/github/license/actually-colab/desktop) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/actually-colab/desktop.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/actually-colab/desktop/context:javascript) ![GitHub repo size](https://img.shields.io/github/repo-size/actually-colab/desktop) [![Lines of Code](https://tokei.rs/b1/github/actually-colab/desktop)](https://github.com/actually-colab/desktop) ![GitHub issues](https://img.shields.io/github/issues/actually-colab/desktop) ![GitHub closed issues](https://img.shields.io/github/issues-closed/actually-colab/desktop)\n\n[![Open Collective](https://opencollective.com/actuallycolab/tiers/badge.svg)](https://opencollective.com/actuallycolab) [![Patreon](https://img.shields.io/badge/Patreon-F96854?style=flat\u0026logo=patreon\u0026logoColor=white)](https://www.patreon.com/actuallycolab) [![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=flat\u0026logo=youtube\u0026logoColor=white)](https://www.youtube.com/watch?v=ParNlHsbSrY) [![HackIllinois](https://img.shields.io/badge/HackIllinois%201st%20place%20🏆-0A3E54?style=flat\u0026logo=dev.to\u0026logoColor=white)](https://devpost.com/software/actually-colab-real-time-collaborative-jupyter-editor)\n\n# desktop\n\n![React](https://img.shields.io/badge/React-20232A?style=flat\u0026logo=react\u0026logoColor=61DAFB) ![Redux](https://img.shields.io/badge/Redux-593D88?style=flat\u0026logo=redux\u0026logoColor=white) ![Yarn](https://img.shields.io/badge/Yarn-2C8EBB?style=flat\u0026logo=yarn\u0026logoColor=white) ![Netlify](https://img.shields.io/badge/Netlify-00C7B7?style=flat\u0026logo=netlify\u0026logoColor=white)\n\n![Screenshot](.readme/img/screenshot.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eArchitecture Overview\u003c/summary\u003e\n\nThis is a high level overview of our architecture.\n\n![Architecture](.readme/img/architecture.png)\n\n\u003c/details\u003e\n\n## Motivation\n\nThe tools available for real time collaboration between individuals or small teams are often lacking or expensive. Our goal is to build a lightweight collaborative cloud-based Jupyter editor to allow individuals and teams to work on notebooks without the high price tag. The system should \"just work\" with minimal setup overhead and allow users to collaborate on projects anytime, anywhere. Rather than trying to build a full environment to execute code, we allow you to bring your own compute. You can execute code against your local machine or configure the editor to connect to a remote server if you need more horsepower. By allowing you to bring your own compute, we can focus on delivering a better collaboration experience without high costs. We build the editor from the ground up to create an experience that is familiar to Jupyter users but focuses on collaboration by design and stores everything in the cloud. Users can create notebooks, share them with their team, and edit together live. By separating the kernel to each user's machine instead of a shared server, you can run the code independently of other users and even view their results. If you need a deliverable notebook to submit or store in source control, you can export the notebook in the `ipynb` format straight from the editor.\n\n## Repository Setup\n\n### The Kernel\n\nThis process is started by the kernel hidden renderer process and communicates with the main process via IPC. Normally this is taken care of for you if you are using the desktop companion, but you may prefer to launch it manually if you run into issues or we don't support your platform.\n\n#### Starting the Kernel Manually\n\n```bash\njupyter notebook --NotebookApp.open_browser=\"False\" --NotebookApp.allow_origin=\"*\" --NotebookApp.token=\"CHOOSE A TOKEN VALUE\"\n```\n\n\u003e Setting the CORS Access-Control-Allow-Origin to `*` is generally a bad practice for security reasons. This will allow any website or malicious agent to execute code against your machine if they know what to look for. Instead, use the following origins depending on if you are in development or production:\n\u003e\n\u003e - Development: `http://localhost:4000`\n\u003e - Production: `https://app.actuallycolab.org`\n\u003e\n\u003e Similarly, you should choose a secure value for the token to make sure malicious clients can't connect to execute code\n\n#### Stopping the Kernel\n\nRun the following command to stop the kernel process:\n\n```bash\njupyter notebook stop\n```\n\nIf the kernel is running on a port other than the default `8888`, you can add the port to the end of the command.\n\nTo get a list of running ports you can run the following:\n\n```bash\njupyter notebook list\n```\n\n### The Editor Client\n\nIn order to setup this repo, you also must clone the [editor repo](https://github.com/actually-colab/editor) and have the following directory structure:\n\n- root\n  - desktop\n  - editor\n\n## Setup Development\n\n1. Clone and setup the `desktop` and `editor` repo with the above directory structure\n2. Start the `editor/server`\n3. Install and build the `editor/client` via `yarn install \u0026\u0026 yarn build`\n4. Install the `desktop` dependencies via `yarn install`\n\nIf the `editor/client` changes, you can install the latest version in the `desktop` repo by running:\n\n```bash\nyarn upgrade:client\n```\n\nThis will automatically pull the latest client (assuming proper directory structure), install and build it, remove it from `desktop` and add it back. This complicated process seems to be required from an issue where `yarn install` doesn't pick up the latest build of the local package.\n\n### Environment\n\nYou need to create a file `.env.development.local`:\n\n```\nREACT_APP_GOOGLE_CLIENT_ID=\"\u003cCHANGE_ME\u003e\"\n```\n\nOptionally you can also disable auto connecting during development to avoid spam:\n\n```\nREACT_APP_KERNEL_AUTO_CONNECT=\"off\"\n```\n\n## Starting Development\n\n1. Start the website locally to sign in (see: `www` repo)\n2. Start the app in the `dev` environment:\n\n   ```bash\n   yarn start\n   ```\n\n## Deploying to Production\n\nCreate a file `.env.production.local`:\n\n```\nREACT_APP_BASE_URL=\"\u003cCHANGE_ME\u003e\"\nREACT_APP_GOOGLE_CLIENT_ID=\"\u003cCHANGE_ME\u003e\"\nREACT_APP_AC_API_URI=\"\u003cCHANGE_ME\u003e\"\nREACT_APP_AC_WS_URI=\"\u003cCHANGE_ME\u003e\"\nREACT_APP_SENTRY_DSN=\"\u003cCHANGE_ME\u003e\"\n```\n\nCreate a file `scripts/sentry.sh`:\n\n```bash\n#!/bin/bash\nexport SENTRY_AUTH_TOKEN=\"\u003cCHANGE_ME\u003e\"\n```\n\n```bash\nyarn deploy\n```\n\n## Docs\n\nSee [docs and guides here](https://docs.actuallycolab.org)\n\n## Backers\n\nSupport us with monthly donations to help us continue development and keep the service free for all!\n\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/11/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/15/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/16/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/16/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/17/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/17/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/18/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/18/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/19/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/19/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/20/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/20/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/21/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/21/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/22/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/22/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/23/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/23/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/24/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/24/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/25/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/25/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/26/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/26/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/27/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/27/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/28/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/28/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/backer/29/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/backer/29/avatar.svg\"\u003e\u003c/a\u003e\n\n## Sponsors\n\nBecome a sponsor and we'll add your logo to our README and link to you on our website!\n\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/11/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/15/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/16/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/16/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/17/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/17/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/18/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/18/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/19/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/19/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/20/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/20/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/21/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/21/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/22/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/22/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/23/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/23/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/24/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/24/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/25/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/25/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/26/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/26/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/27/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/27/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/28/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/28/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/actuallycolab/sponsor/29/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/actuallycolab/sponsor/29/avatar.svg\"\u003e\u003c/a\u003e\n\n## Maintainers\n\n- [Jeff Taylor-Chang](https://github.com/jtaylorchang)\n- [Bailey Tincher](https://github.com/baileytincher)\n\n## License\n\n`@actually-colab/desktop` is [GPLv2 licensed](./LICENSE)\n","funding_links":["https://github.com/sponsors/actually-colab","https://patreon.com/actuallycolab","https://opencollective.com/actuallycolab","https://www.patreon.com/actuallycolab","https://opencollective.com/actuallycolab/backer/0/website","https://opencollective.com/actuallycolab/backer/1/website","https://opencollective.com/actuallycolab/backer/2/website","https://opencollective.com/actuallycolab/backer/3/website","https://opencollective.com/actuallycolab/backer/4/website","https://opencollective.com/actuallycolab/backer/5/website","https://opencollective.com/actuallycolab/backer/6/website","https://opencollective.com/actuallycolab/backer/7/website","https://opencollective.com/actuallycolab/backer/8/website","https://opencollective.com/actuallycolab/backer/9/website","https://opencollective.com/actuallycolab/backer/10/website","https://opencollective.com/actuallycolab/backer/11/website","https://opencollective.com/actuallycolab/backer/12/website","https://opencollective.com/actuallycolab/backer/13/website","https://opencollective.com/actuallycolab/backer/14/website","https://opencollective.com/actuallycolab/backer/15/website","https://opencollective.com/actuallycolab/backer/16/website","https://opencollective.com/actuallycolab/backer/17/website","https://opencollective.com/actuallycolab/backer/18/website","https://opencollective.com/actuallycolab/backer/19/website","https://opencollective.com/actuallycolab/backer/20/website","https://opencollective.com/actuallycolab/backer/21/website","https://opencollective.com/actuallycolab/backer/22/website","https://opencollective.com/actuallycolab/backer/23/website","https://opencollective.com/actuallycolab/backer/24/website","https://opencollective.com/actuallycolab/backer/25/website","https://opencollective.com/actuallycolab/backer/26/website","https://opencollective.com/actuallycolab/backer/27/website","https://opencollective.com/actuallycolab/backer/28/website","https://opencollective.com/actuallycolab/backer/29/website"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factually-colab%2Fdesktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Factually-colab%2Fdesktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factually-colab%2Fdesktop/lists"}