Skip to main content

Tower CLI and runtime environment for Tower.

Project description

Tower CLI

The Tower CLI is one of the main ways to interact with the Tower environment. You can do basically everything you need inside the Tower CLI, including run your code locally or remotely in the Tower cloud.

Installing the Tower CLI

The main way to install the CLI is using the pip package manager.

$ pip install -U tower

You can also download the CLI directly from one of our releases.

Nix Flake

If you have Nix installed with flakes enabled, you can install the latest version of tower CLI with the following:

Profile

$ nix profile install github:tower/tower-cli#tower

NixOS/nix-darwin

If you are using NixOS/nix-darwin with flakes then you can add the following:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    tower-cli.url = "github:tower/tower-cli";
  };

  outputs = { self, nixpkgs, tower-cli, ... }@inputs: {
    # with nix-darwin:
    # darwinConfigurations.your-hostname = darwin.lib.darwinSystem {
    nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [{
        environment.systemPackages = [ tower-cli.packages.${system}.tower ];
      }];
    };
  };
}

Devenv

If you're using devenv, you can add tower-cli to your project:

# devenv.yaml
inputs:
  tower-cli:
    url: github:tower/tower-cli
# devenv.nix
{ inputs, pkgs, ... }:
{
  packages = [
    inputs.tower-cli.packages.${pkgs.stdenv.system}.tower
  ];
}

Using the Tower CLI

There are two big components in the Tower CLI reposiory: The CLI itself and the runtime environment for the Tower cloud. We host the runtime in this repository and pull it in to our internal code because we want to ensure that the environments behave exactly the same locally and in our cloud!

Using the CLI

It's pretty straight forward! But here's what it looks like right now.

$ tower
Tower is a compute platform for modern data projects

Usage: tower [OPTIONS] <COMMAND>

Commands:
  login    Create a session with Tower
  apps     Interact with the apps that you own
  secrets  Interact with the secrets in your Tower account
  deploy   Deploy your latest code to Tower
  run      Run your code in Tower or locally
  version  Print the current version of Tower
  help     Print this message or the help of the given subcommand(s)

Options:
  -h, --help                   Print help

Optional Features

Tower supports several optional features that can be installed as needed:

AI/LLM Support

pip install "tower[ai]"

Provides integration with language models through:

  • tower.llms: Access to language model functionality

Apache Iceberg Support

pip install "tower[iceberg]"

Provides Apache Iceberg table support:

  • tower.create_table: Create Iceberg tables
  • tower.load_table: Load data from Iceberg tables

Install All Optional Features

pip install "tower[all]"

Check Available Features

You can check which features are available in your installation:

import tower
import pprint

# Print information about all features
pprint.pprint(tower.get_available_features())

# Check if a specific feature is enabled
print(tower.is_feature_enabled("ai"))

About the runtime environment

The tower-runtime crate has the Rust library that makes up the runtime environment itself. All the interfaces are defined in the main crate, and the local package contains the invokation logic for invoking tower packages locally.

To learn more about tower packages, see the tower-package crate.

Contributing

We welcome contributions to the Tower CLI and runtime environment! Please see the CONTRIBUTING.md file for more information.

Code of Conduct

All contributions must abide by our code of conduct. Please see CODE_OF_CONDUCT.md for more information.

Development

Here are a few handy tips and common workflows when developing the Tower CLI.

Python SDK development

We use uv for all development. You can spawn a REPL in context using uv very easily. Then you can import tower and you're off to the races!

uv run python

To run tests:

uv sync --locked --all-extras --dev
uv run pytest tests

If you need to get the latest OpenAPI SDK, you can run ./scripts/generate-python-api-client.sh.

Testing

We use pytest to run tests. Copy pytest.ini.template to pytest.ini and replace the values of environment variables

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tower-0.3.30.tar.gz (216.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tower-0.3.30-py3-none-win_arm64.whl (4.4 MB view details)

Uploaded Python 3Windows ARM64

tower-0.3.30-py3-none-win_amd64.whl (4.6 MB view details)

Uploaded Python 3Windows x86-64

tower-0.3.30-py3-none-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.30-py3-none-musllinux_1_2_i686.whl (5.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.30-py3-none-musllinux_1_2_armv7l.whl (4.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

tower-0.3.30-py3-none-musllinux_1_2_aarch64.whl (4.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.30-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.30-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

tower-0.3.30-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.30-py3-none-macosx_11_0_arm64.whl (4.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.30-py3-none-macosx_10_12_x86_64.whl (4.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

tower-0.3.30-py3-none-linux_armv6l.whl (4.7 MB view details)

Uploaded Python 3

File details

Details for the file tower-0.3.30.tar.gz.

File metadata

  • Download URL: tower-0.3.30.tar.gz
  • Upload date:
  • Size: 216.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.17

File hashes

Hashes for tower-0.3.30.tar.gz
Algorithm Hash digest
SHA256 31eea3da89f25e252ca3be6c1768e2775ed379dfd4bf854c22db93f88871879a
MD5 7a3c17f7e20b83f85862414eaba9b399
BLAKE2b-256 8475026bf26c8e4c4c5fdf5672e8196cb0a32630a6dab25c2023a23a911277cf

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-win_arm64.whl.

File metadata

  • Download URL: tower-0.3.30-py3-none-win_arm64.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.17

File hashes

Hashes for tower-0.3.30-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 89765e30bee3d3fa751b68eb4f9179739237bf0ab5c3b2ffdc4fa154d323f293
MD5 42dfe737de61b13f3f23c0e02296f2d6
BLAKE2b-256 843f1efd586996e61a7a7c2dbe92e6cd8ceb3588848306f1ae4b07b446ad3169

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-win_amd64.whl.

File metadata

  • Download URL: tower-0.3.30-py3-none-win_amd64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.17

File hashes

Hashes for tower-0.3.30-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 007a192c119fff1d6a4ea0ca32d98c58db646c547cf5ef492dc02d4b79550818
MD5 cecf1c983ac75f70c4642edec7c68e97
BLAKE2b-256 4d7c2b9ea0cad37978ed0c08665d3dc50f3b7177bf7d4dff537d94d0beed284b

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 61c42b899707e6925df2d00024f54b61e86c93de02e355a6a94833a7068c8174
MD5 41c2b548fea02a03357552b66241bf8e
BLAKE2b-256 5bd216c7528be953b6f6c400aedb1b388532309346c96ed678794212b4ee7795

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9f1c99eb589b19f93eb0221639226e8cbac2ad4cec50380c760936ecc3f444fd
MD5 21ec07d34ca9e8b45554ac185eb72ea4
BLAKE2b-256 3477c52f7d3169a0682d78e762a403163c80029d081e9e0c7a84c045930bf11e

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6db06a9e55344d36dcb61c8900c8b4ee771f59847fc12870dcb41ff079b11bc1
MD5 522cfc0f4315282c72d5221dbc357c7c
BLAKE2b-256 bd5a971fcda5aecbf0e0cbe2043ede59e748147802eba45de6b84d1e1b718fff

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4bb9a13b08b6f64f2e88d3d94ac5da70e28411fdf2145822d3171cef40e6b994
MD5 9518ccda16a628cae1b26d9da769c1df
BLAKE2b-256 c6e351f19dc3a280d35b3ff05b422aff4f23ff91f690590d457eec1b35e563bf

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c417678dc57eac6f6a4e1532f06b2ba82ee420d61608e8248ab4be18911c656b
MD5 49948925c6c710d6a650a3d546cbfbb4
BLAKE2b-256 6fd1f04cc20c5bc9fdf74da9de0423df589c88d8deded8f0c2be1e1f7a836ff5

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 39c4a54d0dcd4916ef6192c1f3ae8bbda63162daa59d35563639753c120a6c11
MD5 b82b2b46ee9eea0f56ef4a675bda5cbe
BLAKE2b-256 857a156084dc0b74f010a93b4a905bd78ef6ba380be7da13d4801a5dced4c38b

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49711b8f67793f6bd6fee124eeecc92b49472ee63178974ffad70ce90b65419d
MD5 94139e3b2ca0021d614ef63ef85e6f98
BLAKE2b-256 545961da438e759a1f961ada7f786165c615dd17bc6a91d7676307f75468c172

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bc2b8eebd9e94eaaa811ccc7b85d544f7f9c92ddb38a4b19dbe87595d9fa85b
MD5 b71165d34b30047bc311be0cdf01c92d
BLAKE2b-256 cad2d2371c108fc03f0ac16b3374bc075dc2adc0a1e02c294359e0c7688b78c7

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7d114d5b162a752573012134cfc1c07e4bfc0e7f222d0fabaf38cffe19765f92
MD5 3f929a519aabac43671d4058a4c204df
BLAKE2b-256 9b7028ba97f76f86424ddb2a24efaaaa0d45f40b8ea6c7a8faa66a288c49123f

See more details on using hashes here.

File details

Details for the file tower-0.3.30-py3-none-linux_armv6l.whl.

File metadata

File hashes

Hashes for tower-0.3.30-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 e6d07ce59d25c852e9de57321b591a4288a5dad405003f837f587008dfe22d5c
MD5 6cd5102da8638e4ed99955be75d7abbb
BLAKE2b-256 3fe35f10a8b43868a1124ee90f92cef5f45d96e5efe4d4d00f7a1376ec340976

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page