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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.23-py3-none-musllinux_1_2_i686.whl (5.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.23-py3-none-musllinux_1_2_armv7l.whl (4.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.23-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.23-py3-none-macosx_11_0_arm64.whl (4.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.23-py3-none-macosx_10_12_x86_64.whl (4.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.23.tar.gz
Algorithm Hash digest
SHA256 e85e3a099d7627f39c887c2f94eaa2406654fb7885ad669bb6acc3553d6e0559
MD5 606f23e8eb25cedc90fe9468f93ad563
BLAKE2b-256 ba88be7ab69b579f0d02d0f1dc93d749813ec3f4966237c55bafba78c327f546

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.23-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.3

File hashes

Hashes for tower-0.3.23-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 a9d2ed59c0c8086d5c55ea866bfa23884825de0a62faa77a86f04621d0ad3295
MD5 075af3c7800ceefa8724c0760e30dc70
BLAKE2b-256 6557eec6b26f17e944761e00542d785d38d72a5c441b6edf173489faa0d0da94

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.23-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.3

File hashes

Hashes for tower-0.3.23-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 467b3251b5042f5c52941e90fcab73ebfdf1460d35d136f7b9494dedde5dc797
MD5 8d38f3c90a49e6c15fa0861a0c302e96
BLAKE2b-256 520542409ea4af49265114656aa89159f428058f39c0a6955d4e520b6d8de4a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 200be814979e1a4337c4a609bc6ddee0729b410e674b972b0538420ca84f0fda
MD5 c5df0eafcc59b5fe8a7ead7b6c835741
BLAKE2b-256 5a7500f3f05d01baf6a35eff70d88e18075457b78ea813311ae5294eef213097

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7a33171634a6493528b46a3c6b323bfd42f053691a6005381fc518df8e9c0708
MD5 bf27d148c20da8f1ea08ac33320d6fea
BLAKE2b-256 931494276f7c7a2b6b509a84c00193380037a2627881da28b4760788f18f8e74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 db61f7e6a1a9c3b9b805045b6123e8f75f4711a993d2f064e18492b09f64b579
MD5 1d4ad32aab3e5e01246c32467956b9e9
BLAKE2b-256 a270c40886e472ca5707cef97e0cfcab87b04537caed3ab9f1c4dceacd86042b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ea93da1b131acf42fb0facff2f21ab9297b271eaddf49bf1d460752445920eb7
MD5 d51d8759c3b30ebead259220c2cb980e
BLAKE2b-256 0aa7529875e481db1c7b8649eb471dfe4bf80189c9fc3359f5205c371ce0561f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f8dbdcfba96fa2f288b2b64b85636305461fdc2611338b18b8908d6d0c88c18
MD5 13f9ec4e5c7b04ee9d2ab48dba898d3f
BLAKE2b-256 f72696f4a78fd7d8f259d4ca2e4ab172e1b417e3fbbfef0c8f35b978bb7628c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 07ec37550bcb6178b1edc1645899cace25a19b715135604c72d59fdec48790ff
MD5 e909753012ccd71b5281b7ac96d3482c
BLAKE2b-256 e30df7a91cfe9bcdfbf80e2368210c09c14144a08862b575fb4ceb578511c038

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d63e51ae3d2fb147c6be834858a2fbfdddd4fce65e73c81eef7e4d0d7bca53fb
MD5 5fb9cf278078e74ab21bfdcb42e0ab6b
BLAKE2b-256 f738f59848622cf8b2715bdc702ed8cd0b9ed400a1fbed7ada32b2942259787f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a25aab635a323f5d2e9c7cf0e086d1ddcd5c960423456b211e6b02f1a918841
MD5 1859ce733dcb99c4fe472606ff61866d
BLAKE2b-256 44152232642ba2474b71609da0e9b6b56dc760ad275740682d00f9dd001d1806

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6105d8ee50ef5723f5974959d0d0c3ffb630ac316b5529f4bcef4e9964af59d1
MD5 60aabd5a6b40d06ff9910ac8deb6940c
BLAKE2b-256 70757b17612d7a648ab546cc7008a8d6043c1efba80d0079c925c09ebd65c1b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.23-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 972553da5ff3939adf20f9bdf5970a52467fa8fc931fb3c784c38d5bcd5ed30f
MD5 9f284a0b89b48b11d9256fd6515dd119
BLAKE2b-256 4fe98bb2ff36b2c15548b0dc5405d464383cb955285419b2a7c194d969ea42b3

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