Skip to content
CoCalc: Collaborative Calculation in the Cloud
Branch: master
Clone or download
williamstein Merge pull request #3836 from sagemathinc/block-url-in-names
misc/validate name: harden URL detection
Latest commit 9687cf1 May 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Upgrade jest and related packages Mar 7, 2019
src misc/validate name: harden URL detection May 20, 2019
.gitignore doc: little extractor to get a serialized representation of the api doc Mar 4, 2019
.gitmodules examples: added cocalc-assistant as examples submodule Dec 20, 2017 testing: no need for quotes Dec 5, 2018 travis: remove jest smc-util test (is this supposed to work?) May 2, 2019
.travis.yml travis: pip-install missing python packages May 2, 2019 cocalc: more renaming in textfiles Apr 3, 2017 Add existing dev docs Aug 3, 2017 deleted mistaken docker stuff Nov 26, 2018

logo CoCalc

Collaborative Calculation in the Cloud

CoCalc offers collaborative calculation in the cloud. This includes working with the full (scientific) Python stack, SageMath, Julia, R, Octave, and more. It also offers capabilities to author documents in LaTeX, R/knitr or Markdown, storing and organizing files, a web-based Linux Terminal, communication tools like a chat, course management and more.


Very easy install of CoCalc on your computer

You can easily use CoCalc on your own computer for free by running a Docker image.


CoCalc was formerly called SageMathCloud. It started to offer way more than just SageMath and hence outgrew itself. The name was coined in fall 2016 and changed around spring 2017.


Current highly active contributors

  • John Jeng
  • Harald Schilly
  • Hal Snyder
  • William Stein
  • Travis Scholl

Past contributors

  • Greg Bard
  • Rob Beezer
  • Keith Clawson
  • Tim Clemans
  • Andy Huchala
  • Jon Lee
  • Simon Luu
  • Nicholas Ruhland
  • Todd Zimmerman

... and many others: See


The copyright of CoCalc is owned by SageMath, Inc., and the source code here is released under the GNU Affero General Public License version 3+. See the included file

None of the frontend or server dependencies of SMC are themselves GPL licensed; they all have non-viral liberal licenses. If want to host your own SMC at a company, and need a different AGPL-free license, please contact


"CoCalc" is a registered trademark.


  • Client -- javascript client library that runs in web browser
  • Load balancer/ssl -- HAproxy
  • Database -- PostgreSQL
  • Compute -- VM's running TCP servers (e.g., sage, console, projects, python3, R, etc.)
  • Hub -- written in Node.js; primus server; connects with everything -- compute servers, database, other hubs, and clients.
  • Storage -- Snapshots of project data
  • HTTP server -- Nginx

Architectural Diagram

   Client    Client    Client   Client  ...
      | (primus)
 HAproxy (load balancing...)HAproxy                  Admin     (monitor and control system)
 /|\       /|\      /|\      /|\
  |         |        |        |
  |http1.1  |        |        |
  |         |        |        |
 \|/       \|/      \|/      \|/
 Hub<----> Hub<---->Hub<---> Hub  <-----------> PostgreSQL <--> PostgreSQL  <--> PostgreSQL ...
           /|\      /|\      /|\
            |        |        |
   ---------|        |        | (tcp)
   |                 |        |
   |                 |        |
  \|/               \|/      \|/
 Compute<-------->Compute<-->Compute <--- rsync replication  to Storage Server, which has ZFS snapshots



We are grateful to BrowserStack for providing infrastructure to test CoCalc.



  • node
  • Postgres
  • pip install pyyaml; pip3 install pyyaml


The following instruction don't install SMC. They're for development purposes only!

  • git clone --recurse-submodules -- copy repo
  • cd cocalc/src
  • npm run install-all -- build
  • npm test -- run test suite (expected failures if your clock is not UTC)
  • all --compute --web -- build and install some parts system-wide for development use
  • See for more details.

For further options please go here.

You can’t perform that action at this time.