> For the complete documentation index, see [llms.txt](https://ciusji.gitbook.io/elixirnote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ciusji.gitbook.io/elixirnote/guides/built-in-services/elixirnote-lab-server.md).

# ElixirNote Lab Server

## TOC

* [Introduction](#introduction)
* [Installation](#installation)
* [Application](#application)
* [Config](#config)
* [Handlers](#handlers)
* [Process](#process)
* [REST APIs](#rest-apis)
* [OpenAPI Specs](#openapi-specs)

## Introduction

ElixirNote Lab Server sits between ElixirNote and Elixir Server, and provides a set of REST API handles and utilities that are used by ElixirNote. It is a separate project in order to accommodate creating ElixirNote-like applications from a more limited scope.

## Installation

```
pip install elixirlab-server
```

## Application

A Lab Server Application that runs out-of-the-box: **`LabServerApp`**.

Detail methods in **`LabServerApp`**:

* allow\_extensions\_uris: A list of comma-separated URIs to get the allowed extensions list.
* answer\_yes: Answer yes to any prompts.
* app\_settings\_dir: The application settings directory.
* app\_url: The URL path for the application.
* blocked\_extensions\_uris: A list of comma-separated URIs to get the blocked extensions list.
* cache\_files: Whether to cache files on the server. This should be True except in dev mode.
* config\_file: Full path of a config file.
* config\_file\_name: Specify a config file to load.
* extra\_labextensions\_path: Extra paths to look for federated ElixirNote extensions.
* generate\_config: Generate the default config file.
* handlers: Handlers appended to the server.
* jinja2\_options: Options to pass to the jinja2 environment for this.
* labextensions\_path: The standard paths to look in for federated ElixirNote extensions.
* labextensions\_url: The URL for federated ElixirNote extensions.
* listings\_refresh\_seconds: The interval delay in seconds to refresh the lists.
* log\_datefmt: The data format used by logging format for % (asctime)s.
* log\_format: The Logging format template.
* log\_level: Set the log level by value or name.
* logging\_config: Config additional log handlers.
* notebook\_starts\_kernel: Whether a notebook should start a kernel automatically.
* open\_browser: Whether to open a browser after starting.
* schemas\_dir: The optional location of the settings schemas directory. If given, a handler will be added for settings.
* settings: Settings that will passed to the server.
* settings\_url: The URL path of the settings handler.
* show\_config: Instead of starting the Application, dump configuration to stdout.
* show\_config\_json: Instead of starting the Application, dump configuration to stdout (as JSON).
* static\_dir: The optional location of local static files. If given, a static file handler will be added.
* static\_paths: Paths to search serving static files.
* template\_path: Paths to search for serving jinja templates.
* theme\_dir: The optional location of the themes directory. If given, a handler will be added for themes.
* tree\_url: The URL path of the tree handler.
* user\_settings\_dir: The optional location of the user settings directory.
* workspace\_dir: The optional location of the saved workspaces directory. If given, a handler will be added for workspaces.

## Config

Refer to [here](https://github.com/ElixirNote/elixirlabserver).

## Handlers

Refer to [here](https://github.com/ElixirNote/elixirlabserver).

## Process

Refer to [here](https://github.com/ElixirNote/elixirlabserver).

## REST APIs

Refer to [here](https://github.com/ElixirNote/elixirlabserver).

## OpenAPI Specs

Refer to [here](https://github.com/ElixirNote/elixirlabserver).
