Skip to content
This repository

The Sage Cell Server---providing a way to embed Sage computations into any web page.

branch: master
Octocat-spinner-32 contrib *return* an error callback, so we don't keep executing the function. April 05, 2014
Octocat-spinner-32 doc instructions for installing haproxy March 01, 2014
Octocat-spinner-32 router-ipc Set up a router-ipc directory to house the AsyncSender ipc pipes. November 23, 2013
Octocat-spinner-32 sage-patches Update Sage patches for Sage 5.11 August 18, 2013
Octocat-spinner-32 sage-spkg add required ecdsa package to spkg script (required for paramiko) March 01, 2014
Octocat-spinner-32 static Make static test directory with some test pages. April 12, 2014
Octocat-spinner-32 submodules Upgrade jquery and jquery-ui-touch-punch. February 25, 2014
Octocat-spinner-32 templates Get IPython widgets working with the cell server January 12, 2014
Octocat-spinner-32 tests Make the interact test page served from the static directory, and mak… June 29, 2013
Octocat-spinner-32 timing Fix simple testing scripts for the new session id handling. April 26, 2012
Octocat-spinner-32 .gitignore Always open dialog below cursor; keep focus on textbox July 01, 2013
Octocat-spinner-32 .gitmodules Update CodeMirror repository URL to new location on GitHub September 17, 2012
Octocat-spinner-32 LICENSE.txt Clarify the licensing situation, since we are importing Sage code in … May 07, 2013
Octocat-spinner-32 Makefile Switch to OrbitControls, which now supports having z being the up dir… March 04, 2014
Octocat-spinner-32 README.rst mention in readme that you need to apply IPython PR 4195 now. October 03, 2013
Octocat-spinner-32 comm.py Add SageCellComm class that basically resets the timeout anytime a co… October 04, 2013
Octocat-spinner-32 config_default.py Make the temporary directory settable from the command line and from … September 12, 2013
Octocat-spinner-32 db.py Allow the user to create permalinks with interact values and bookmarks August 04, 2013
Octocat-spinner-32 db_sqlalchemy.py Make the permalink generator retry in the event of a collision August 10, 2013
Octocat-spinner-32 db_web.py Allow the user to create permalinks with interact values and bookmarks August 04, 2013
Octocat-spinner-32 dynamic.py Implement readonly and locations parameters to interacts August 03, 2013
Octocat-spinner-32 exercise.py Add linear algebra exercise example. September 12, 2013
Octocat-spinner-32 fix-js.py Use fix-js.py instead of wrap-jquery shell script June 17, 2013
Octocat-spinner-32 forking_kernel_manager.py Disable history completely December 07, 2013
Octocat-spinner-32 graphics.py Add cone, cylinder, and box functions December 13, 2013
Octocat-spinner-32 handlers.py Add an OPTIONS handler for / for health checks February 18, 2014
Octocat-spinner-32 interact_compatibility.py Initial port of William's exercise string decorator August 07, 2013
Octocat-spinner-32 interact_sagecell.py Fix shell reply message handling, and kill an unnecessary reply message. October 03, 2013
Octocat-spinner-32 log.py Get appropriate info for the statistics log messages August 15, 2013
Octocat-spinner-32 misc.py Add stream_message function February 13, 2014
Octocat-spinner-32 namespace.py Fix typo in namespace deletion August 07, 2013
Octocat-spinner-32 permalink.py Return error from permalink web server when code is not found October 17, 2013
Octocat-spinner-32 permalink_server.py use the remote ip from proxy headers August 20, 2013
Octocat-spinner-32 receiver.py Fix registration typo March 04, 2014
Octocat-spinner-32 sender.py Set up a router-ipc directory to house the AsyncSender ipc pipes. November 23, 2013
Octocat-spinner-32 trusted_kernel_manager.py Fix typo affecting kernels that are pre-forked February 13, 2014
Octocat-spinner-32 untrusted_kernel_manager.py Make the temporary directory settable from the command line and from … September 12, 2013
Octocat-spinner-32 web_server.py Log startup/shutdown/tornado exceptions. January 30, 2014
README.rst

This is a Sage computation web service.

Installation

  1. Make sure you have git; if you're on Ubuntu, you’ll also need the UUID dev package for ØMQ (uuid-dev on Ubuntu, libuuid-devel on Redhat).

  2. Compile Sage 5.10.rc1 (download it from http://www.sagemath.org/download-latest.html).

  3. Delete the IPython installation in Sage: go to SAGE_ROOT/local/lib/python/site-packages/ and delete the IPython directory and the ipython egg.

  4. Install ipython past commit ipython/ipython@0d4706f74b5b454c0a54026547a286caa786e6a4. For example, you can do this:

    sage -sh -c "easy_install https://github.com/ipython/ipython/archive/0d4706f.zip"
    

UPDATE: the current codebase now requires IPython with this pull request applied: https://github.com/ipython/ipython/pull/4195

  1. Install the latest sagecell spkg at http://sage.math.washington.edu/home/jason/sagecell-spkg/ (replace <filename> below with the name of the current spkg):

    sage -i http://sage.math.washington.edu/home/jason/sagecell-spkg/<filename>.spkg
    

To start up, go into the $SAGE_ROOT/devel/sagecell directory and do:

  1. Copy the config_default.py file to config.py and edit the sage variable and username/host variables. In particular, the host and username variables should point to an SSH account that you can log into without typing in a password. For example, by default, it assumes you can do ssh localhost without typing in a password. You’ll want to change this to a more restrictive account; otherwise anyone will be able to execute any code under your username. You can set up a passwordless account using SSH: type “ssh passwordless login” into Google to find lots of guides for doing this, like http://www.debian-administration.org/articles/152.
  2. ../../sage -sh -c "make -B" (We run it inside of sage -sh so that make can find the root Sage directory for various IPython files it needs. If Sage is in your $PATH, you can run it normally.)
  3. ../../sage web_server.py

The biggest potential troublesome spot in the installation is that the spkg has to apply two patches to Sage. If you have uncommitted changes, or if you have conflicts, the installation will stop.

The default configuration is not secure, so you'll need to do more work to harden the system to open it up to outside users. But at least that should get you up and running for a personal/development server.

See the :doc:`Advanced Installation <advanced_installation>` guide for more details about configuring and running a server.

License

See the :download:`LICENSE.txt <../LICENSE.txt>` file for terms and conditions for usage and a DISCLAIMER OF ALL WARRANTIES.

Browser Compatibility

The Sage Cell Server is designed to be compatible with recent versions of:

  • Google Chrome
  • Firefox
  • Safari
  • Opera
  • Internet Explorer (9+)

If you notice issues with any of these browsers, please let us know.

Something went wrong with that request. Please try again.