Welcome to the TOM Toolkit’s documentation!


The TOM (Target and Observation Manager) Toolkit project was started in early 2018 with the goal of simplifying the development of next generation software for the rapidly evolving field of astronomy. Read more about TOMs and the motivation for them.

Interested in seeing what a TOM can do? Take a look at our demonstration TOM, where we show off the features of the TOM Toolkit.

Are you looking to run a TOM of your own? This documentation is a good place to get started. The source code for the project is also available on Github.

Start with the introduction if you are new to using the TOM Toolkit.

If you’d like to know what we’re working on, check out the TOM Toolkit project board.

Architecture - This document describes the architecture of the TOM Toolkit at a high level. Read this first if you’re interested in how the TOM Toolkit works.

Getting Started - First steps for getting a TOM up and running.

Workflow - The general workflow used with TOMs.

Programming Resources - Resources for learning the core components of the TOM Toolkit: HTML, CSS, Python, and Django

Frequently Asked Questions - Look here for a potential quick answer to a common question.

Troubleshooting - Find solutions to common problems or information on how to debug an issue.

Extending and Customizing

Start here to learn how to customize the look and feel of your TOM or add new functionality.

Custom Settings - Settings available to the TOM Toolkit which you may want to configure.

Customizing TOM Templates - Learn how to override built in TOM templates to change the look and feel of your TOM.

Customizing Template Tag - Learn how to write your own template tags to display the data you need.

Adding new Pages to your TOM - Learn how to add entirely new pages to your TOM, displaying static html pages or dynamic database-driven content.

Adding Custom Target Fields - Learn how to add custom fields to your TOM Targets if the defaults do not suffice.

Adding Custom Data Processing - Learn how you can process data into your TOM from uploaded data products.

Building a TOM Alert Broker - Learn how to build an Alert Broker module to add new sources of targets to your TOM.

Changing Request Submission Behavior - Learn how to customize the LCO Observation Module in order to add additional parameters to observation requests sent to the LCO Network.

Creating Plots from TOM Data - Learn how to create plots using plot.ly and your TOM data to display anywhere in your TOM.

The Permissions System - Use the permissions system to limit access to targets in your TOM.

Automating Tasks - Run commands automatically to keep your TOM working even when you aren’t

Advanced Topics

Background Tasks - Learn how to set up an asynchronous task library to handle long running and/or concurrent functions.

Building a TOM Observation Facility Module - Learn to build a module which will allow your TOM to submit observation requests to observatories.

Running Custom Code Hooks - Learn how to run your own scripts when certain actions happen within your TOM (for example, an observation completes).

Scripting your TOM with Jupyter Notebooks - Use a Jupyter notebook (or just a python console/scripts) to interact directly with your TOM.

Observing and cadence strategies - Learn about observing and cadence strategies and how to write a custom cadence strategy to automate a series of observations.

LaTeX table generation - Learn how to generate LaTeX for certain models and add LaTeX generators for other models.

Advanced Querying - Get a couple of tips on programmatic querying with Django’s QuerySet API

Authentication exceptions for external services - Ensure that your custom external services have

appropriate and visible errors.


Once you’ve got a TOM up and running on your machine, you’ll probably want to deploy it somewhere so it is permanently accessible by you and your colleagues.

General Deployment Tips - Read this first before deploying your TOM for others to use.

Deploy to Heroku - Heroku is a PaaS that allows you to publicly deploy your web applications without the need for managing the infrastructure yourself.

Using Amazon S3 to Store Data for a TOM - Enable storing data on the cloud storage service Amazon S3 instead of your local disk.


If you find an issue, you need help with your TOM, you have a useful idea, or you wrote a module you’d like to be included in the TOM Toolkit, start with the Contribution Guide.


Looking for help? Want to request a feature? Have questions about Github Issues? Take a look at the support guide.

If you just need an idea, checkout out the examples of existing TOMs built with the TOM Toolkit.

About the TOM Toolkit

The TOM Toolkit is managed by Las Cumbres Observatory, with generous financial support from the Heising-Simons Foundation and the Zegar Family Foundation.

Read about the project and the motivations behind it on the About page.