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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.21-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.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (5.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.21.tar.gz
Algorithm Hash digest
SHA256 2911fa6bec1fefdd742c54d53063d284d9382546bffd0bb9f80bbb0948612564
MD5 6c0d29b1d2437587fc5d02ba6510a870
BLAKE2b-256 df3cb998fd835e9ee4150b6cb077379c4cefacd7c003171ab01442bb1cc9a5b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.21-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.0

File hashes

Hashes for tower-0.3.21-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 051a5a22a6cb79755fcf3346575d4d51bfb5fe5e09837d2b523446cc9992f6d0
MD5 b8301beb039cfe76b004619b696d9309
BLAKE2b-256 2ee18d07d4db9ee66af3214d6b267629530858c524702a7428ebb179c4adafec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.21-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.0

File hashes

Hashes for tower-0.3.21-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dec438f3c2756bbdaed73a21e41f1e5f192b732ef40dcb165eee80dfcd08b4d1
MD5 b6a8b59e16607116c34ccae88bf370b1
BLAKE2b-256 1ed20093adff12c6a086f8f5a393eefe76aca7482ce2ed3b6e5a55ae320a70f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fc29244ea184d3f6daeaa2592473eb757ef5cbca099a3bbc5da796e362ce8eb9
MD5 0887b9e5bffaf3a2ec52ee396c25ea15
BLAKE2b-256 274f0adfd3674a38e71d39557befb2576592e38ef43cd5548eb01a0653ecb685

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 504028595b3aa7cbb9d03c3670684e1750f8ea6f84d930ed44d114d6bfcb86a6
MD5 b9d9e1fa18fb5723269769dc67df2a80
BLAKE2b-256 a10eec7b9c6cd3ad639c1e755cb8d2525535e94ed6727b125e4ae00544416202

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 b9f4fb9d18d1707eb7bf84c5350eefa0c0ead3bae730711200222b87fe670a3e
MD5 1eeac4ec2501c38fdaa2143e1d018c65
BLAKE2b-256 e6b009b2087a6186c74a8321b10bbffa43c8859046c9617bb4f3fc258dd7cc9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 967446a7b20acc13f22a91ab402de889e0964e124962fc3b05b747fc4a36da4d
MD5 bdff923aa411c90617d20c84c57302c6
BLAKE2b-256 992596dd1a031c0fead449107c2440090963abf10bd1ede3c74da49f8f204a5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f526f3ef57612429bde4077c0b0ff34ef86b6efc4b983d0042f66eb864eb642c
MD5 164171740c11107e4df95cafb5b01b5e
BLAKE2b-256 7bafac531e97161fc12fe7f33f41f9631d6de5075017e99259f5b0d90c468335

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f58f3c2c6871f6e292d17c207962937e3a52cf0101b5610d416b79bc2f7a146a
MD5 e2a5a40b9907b20e10edbd75716008a1
BLAKE2b-256 ca05a5ea760395d69663738492eefb652e56c9a66e18124ef49af019c9e6d31c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a613b4c80c1d8a45b7a1deea764df384dd4287e97f0c4f99ddbd52a1019ff0da
MD5 85c0aba378f4af8877b318fe939d51fb
BLAKE2b-256 889e8c40f4e9b4ee2484dbe1914a09c6bebebe5e1875beef7277f206bd0632c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 17f06166e70d56456603980bed7c7515b1d6d4adbaf4ac356ede62d7eb137b5f
MD5 6c49ee757222025358d94be7bfb71e66
BLAKE2b-256 02e9e65a5eb7be8755d1b953d49f45f1b758b4cbf5ab42c7e3936a9bd07e6049

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d59433f135da343d92c941fb4263cf6190f31cce0b383e47a0c95faf852ab04b
MD5 97cb73d2752cc473d9528fc5f76c90b6
BLAKE2b-256 e6eccc31ac70f7442be3dd3add0695013d8bdd9d6d1104fb2c830a6cabd3d2e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 f63e806fe3df474c262924c6bc4c8b6f85931fc8ced72d15931887640a7dc71a
MD5 e98738e5cba5eef27b74f9391810396f
BLAKE2b-256 1f33e12056b69dc7a9055093729ba666d8647d370bd43d105bbe4243bcf76631

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