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.29.tar.gz (212.4 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.29-py3-none-win_arm64.whl (4.3 MB view details)

Uploaded Python 3Windows ARM64

tower-0.3.29-py3-none-win_amd64.whl (4.5 MB view details)

Uploaded Python 3Windows x86-64

tower-0.3.29-py3-none-musllinux_1_2_x86_64.whl (4.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.29-py3-none-musllinux_1_2_armv7l.whl (4.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

tower-0.3.29-py3-none-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.29-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.29-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

tower-0.3.29-py3-none-linux_armv6l.whl (4.6 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.29.tar.gz
Algorithm Hash digest
SHA256 e477159dc47c5c41255c559348f3cef3be900194b17b8df436033437ac2c4820
MD5 1c6ef838180ce73bc9e22ec83e954161
BLAKE2b-256 df2c2809ec099266ad706c803d073e12cb009ccd01926555dc9dc095481a1f1a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.29-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 bd7bd6b5a7ae607a8fa07747a30c101cdd07e6db3db9e11e453bfd618f8fe3b2
MD5 771eae2f165a51ade5c105b42f0f2b2f
BLAKE2b-256 342f536c39bd4b69e5c48d4a01ebc0b6f857e0379df50f5def84ace5bf24c781

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.29-py3-none-win_amd64.whl
  • Upload date:
  • Size: 4.5 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.29-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 374adb702a074400e69357011b29c48ff1a3d6c71f0b93dcad046be057272afe
MD5 cd4066141a11e03ffb6f6377e37d1eaf
BLAKE2b-256 b8491387822e5fc4e42aa9c47afae6a45a3b5f4b4169128fafd7a45075dc4a70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ae4c2bae9a4e3db2a17ce14a36d1a3aa75406aed568cbfa5647d02559a36cf4
MD5 53a1b0385df8265495d0d257ac1decef
BLAKE2b-256 c2db8982c764069f58dbf80976ef027fd134a844069579d97ab6f599e6dd186d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 23ec89bce2e0f21db0591ab7c8efde777243258467cec89f179c31e0409908c4
MD5 24125d2ad924d27c57fb84d1f848cb07
BLAKE2b-256 31097efa72673a918fd35bcc881de213886fc1a5b86691b3e0ddb4887888e30a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 94e3b666274a3fd0c6f55286d3b23b4fbc5c37a1d5bf849b8790bd37c5e224e7
MD5 80de232a6fabc53fc2775e068334f17d
BLAKE2b-256 bd7d0745dac9484fa4a24e67ebfa36ead6425a43c92392c76321f86efeedd775

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8da4def9e9516dc8ffab39a3c5a2bf17d663f7efec108c162d0212097ea9e8dc
MD5 b8d06de55600133b53b18bc4996bd8d4
BLAKE2b-256 4a7eddb166db040881122041ef592e269d1efb25525e011dc52c2ba9573e6348

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a7b2aaf37936b4ac280c5a89fed85c9b7a1d8b44f9726f046cb763fd8a8eca6
MD5 02a3551939cc1a47c9929215995fa2e4
BLAKE2b-256 663c1ce558f60b4fda2afdf84689c6e32d15ed46f4ac71b1c51453ebb014f739

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 dac13ed0da9a023441a0d578e20cd42dd420fdc6dea631250b5e113c67209a1a
MD5 5eb536bd7ee2749e07a93c10f166ae79
BLAKE2b-256 c1f4148d2c67e7b465d1a376d5fbb95e8a1ffa0cd6d0a834ddf75f88f6ba17bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d3d8f277ff47259cc0398894728245d7a66e88cb7433959f691fb93c7f0b0b1b
MD5 95743ca2951a0c68a40fca188218ef42
BLAKE2b-256 48f9edb47b1b3dae88304ef9bf47c2711edbfb4d68b4c5d5e8a6c7696f483544

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08f02c4e48decd55df1f10a781fb6dac2b12e090123a36b94f1c3cc3c8d9b318
MD5 5b606e5afc40e0ef072d1dfdd4083fa6
BLAKE2b-256 6ee2dceb5aad879f9641912632afeac206d271c7a4fd8e58eda4fc2be7b83ea6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b9664a505754dac2383bfc6de00eff930e7c39a7b6afe63f1ce385738675cc35
MD5 1460e81d93447769391a43445017f2e4
BLAKE2b-256 3957e7c1b32edd3e82f90cd60dd2952e59ccbeac266304bbaed4b2f37297ecb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.29-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 9b54bd881b05ba0582259ec5094c14c94c404a2868b142f2cf8117c2708256f4
MD5 5b7c6128eeabc6b3a20a4cf3d5fcb0c3
BLAKE2b-256 1ea8850294a49ff33501518e3133019bc4bb27f25d6014263fba349303baba7f

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