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.

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.21rc2.tar.gz (184.9 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.21rc2-py3-none-win_arm64.whl (4.4 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

tower-0.3.21rc2-py3-none-musllinux_1_2_x86_64.whl (5.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.21rc2-py3-none-musllinux_1_2_i686.whl (5.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.21rc2-py3-none-musllinux_1_2_armv7l.whl (5.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

tower-0.3.21rc2-py3-none-musllinux_1_2_aarch64.whl (5.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.21rc2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.21rc2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (5.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

tower-0.3.21rc2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.21rc2-py3-none-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.21rc2-py3-none-macosx_10_12_x86_64.whl (5.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

tower-0.3.21rc2-py3-none-linux_armv6l.whl (5.3 MB view details)

Uploaded Python 3

File details

Details for the file tower-0.3.21rc2.tar.gz.

File metadata

  • Download URL: tower-0.3.21rc2.tar.gz
  • Upload date:
  • Size: 184.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.0

File hashes

Hashes for tower-0.3.21rc2.tar.gz
Algorithm Hash digest
SHA256 1adb14863e5e3e0abd624ae2ecfda2ee580104e72adce47fdffe617b9c045e6c
MD5 3e2bcece91db8acd5569b06038d96525
BLAKE2b-256 c668a105f8d477eec7d7eaa70f236fec00c9349bbdfa4abd37ecc8721b16e0e2

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-win_arm64.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 a4c2079d6491304a1c42ea77dbe9541f747abee331ca1ab6908e1fe3f7cc8b56
MD5 0ecb4553a62022967caf1be320022c40
BLAKE2b-256 edd9f7b5e4d850c70f8c356d690f25fc0399d0f9503721437844591aac975459

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0bad2445775bf1401a5779097092fc69edd885361e9b4311dec0a80f811ad6e2
MD5 aae7f95e85ccb390625a70e9746cf113
BLAKE2b-256 4c5dbcad94b60ea6f9ca92a2910ebbcc2505173dca46167fd95050875c8f55de

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5506e376163cc3cb96bc32a079d48021fbaea47481fe75cfd59fe6c472098444
MD5 0bd1a27d08e0af310c65706f7ddd3186
BLAKE2b-256 46f329c95857dac32fb000b55e7b14aebaaabdabb9c910e8491547abe9297f19

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 aba177655aaafe563661a08b9f754e426bac07b6ed2f789b2b29af1ed6903ba0
MD5 e3d4804ae4bc6417a623910e431c843e
BLAKE2b-256 14b86616fbf12c0f81a63388ef6ed186e1156a6feeb28741feec925dd8337cb4

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f2f2fe216d4093dd495473ddfa331b3a4440839caf3ab2117117ea9577dc0f7e
MD5 bf0d99ed53d3d2d78a2b37c0d9de4af1
BLAKE2b-256 a0f9bd47606a30ce4c0e271ee137f89b1219f0a65d29081d3bd74624846b5839

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 864620d0fb0455dde222afb79385c5f4e8520cf91b2e0e57e89584ccf7484e97
MD5 9bf82df86efa4aee80ddcbca0df7ce52
BLAKE2b-256 b9467c2a200c95ed7366472a2e0b7f7d42d8239e7636398af05d2116d2d4555a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 531893e9871ccd495e5a0190d32719cfbe5203fed262f0fca86d44b14d141413
MD5 c2ea49bb30b2f3ef9b3c76174614193f
BLAKE2b-256 4ae70edd987f8f27955dada76d18cb7086e2db008fbae87f2490811de60ba1e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 50c8a3d8f3e017368b39ba0fea7e35ca2dc71a5122f436155a17b487f8c56a51
MD5 4598db514aac9d41dfbb24a5e59f6f0e
BLAKE2b-256 aa74a9bd1eb35a27c26e6ae78ef006c76e4002f809b48084b526ba026dfa5916

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 41895a5009babc83d5244d26f98e4a2c89121c2852086e3a626b0561f3be6977
MD5 337b51539a0e4fda311161ded3112584
BLAKE2b-256 9d80fc194aee176fad224d6a5e5283d973c705bda07b0a6849f8474f964df9aa

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb40af72d16c6f80aa4cbff74e04c0c885058337207a2c6472a7a7c7c07888bb
MD5 4d7b1ba05912e36f72f6a8b09dcdfed0
BLAKE2b-256 cd21b165f3857535718396a88705396034ffc9991d71e2d0568cded9c3753238

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ca0a80119336f13cab1d5ab712e942a933fd2f8483c2859ad72930f29f173cf6
MD5 436e233ed3c9f2ce7c9d2f842cbc9d6f
BLAKE2b-256 52d479455bc76675437efd915ecc62ec51fc346e013734dcdcad9e9797efad9c

See more details on using hashes here.

File details

Details for the file tower-0.3.21rc2-py3-none-linux_armv6l.whl.

File metadata

File hashes

Hashes for tower-0.3.21rc2-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 0241d60c557997b5b569fe68effc394565e01edaa030f4e23accb86e2dd196bf
MD5 3ab602b9188bf75c1fc9c5aa37553b50
BLAKE2b-256 53e29eefa18dfee631451f8e7c0272c8d77cdbd77699122c621c92e92b6a9079

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