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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.28.tar.gz
Algorithm Hash digest
SHA256 37c3736c0ee6b2bfc44cddaedff31f148edd5081de72326108b7a1e024d4d979
MD5 a266dbb5331500e99fe5bbdf52729a0d
BLAKE2b-256 1bb023c84a8f0ecd8c114df0617a9a1184819985ee5c5d62adf49bb871eef65c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.28-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.15

File hashes

Hashes for tower-0.3.28-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 1ba78637f220a5b299659f84663e8dd77ed33c162249c93e3a34f78ba9de76bc
MD5 a314f166762ef3b9f7067192ec65f0fa
BLAKE2b-256 8a114b1655e3e207efd2b00968efd2ca255ce9b0ee3eb1747fe24ba0197645b4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.28-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.15

File hashes

Hashes for tower-0.3.28-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c1993d924227580b52b9e4e507c18fea93cca69a2c31debcbdfdbea7c5a96409
MD5 1b93cb252c17310079705230df2d2948
BLAKE2b-256 3b778a4d8c3298ed0b0f32e628011e56e05305e8eb0a49447a85626b4a3ebfc2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 64a35c4e5d04df7a92642da76ffc49d0e2c30a2f20d3e2b46887623931f2feb8
MD5 d3b0af34e6b7cca2327b133e3bc930ad
BLAKE2b-256 593157ed2256cb0041616feb93aa028a7525fb2284df36867138433aeebe9c5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fbeadf1afaaf9369a9f4c0727d938eed001722984b28cf18c1b50e8b774fe9af
MD5 e551ec593540d7710c5fa6e02d3b041d
BLAKE2b-256 1e811229cc5e5d35780cb055e761c47b1e514f72d20ae78a8994c7cf600da48f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 24a87172b06a9837e2bb66a17ecd9039331f668a08cf4b70fb9d3398e9432387
MD5 61af3557b4170b55128b508e98ea0d81
BLAKE2b-256 e5692e0196f9dd8f55b596b8c459f0fd437c6f479ee68c02eb9bfd9c5d028a24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d03950c1cde999e39e2115766ff3b5cd4fb5462b9139505c397fe31c2a73760e
MD5 5fe637a7488ca9e31e14b98ecfefafae
BLAKE2b-256 985152bea152f01a79ea690dba92dd6fcbf4e623cedb69c864e07aa3a907cc96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 778bb7dd6b78a0b309a49b91740c7ea0c761c4aae94d067f7e123e6eded089e8
MD5 d9825bb46bcbc224667d29dabbb6709d
BLAKE2b-256 ba4d94733ede3307f9da733e8f48f094fb3473abb9a4f4cc932c778d96617650

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5be0fae0c0e64d39e7ce1b0973e336be2f938d2f48d5a58aa17716590ed4f2a6
MD5 e2ecda068b42963d4db8d697e02aa694
BLAKE2b-256 6c5f2a0c65989d04b240bc8231f9d318984c5b8e246127b832d78cc078d0fd11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a2cf220b1e535c9969b52ffc708247b783bc3a0fa6f826f004354e5d1de034c
MD5 beb70d6c03c97259eaf74b104c148da3
BLAKE2b-256 5a4c3df93f528c50fb05a73a4061b24cb92cce639ff8451e86bb9adcd47c0928

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01533abbc50e2d485e864032f2fc53602d8b7369f4dac7ed66f28596c379bcaf
MD5 4989faba5b9048494315ee312c6e4872
BLAKE2b-256 626b84fe567093175f30b7db9559778e5057ddf699258e5cda9ba6a0cfa1cd69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f3fab7302b5da5e8b3f200c4587e4898756fc128313b1eb9566d9b4fa224c104
MD5 80ed4e377f5c6c893fb51e84a9ed10b4
BLAKE2b-256 eec0bdac103365406be8c6f47d16a8ea8f87a405305c1e58e6d875d56e3fd344

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.28-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 d8fb8995bd5643579a7174be144c725aecc95438fff1012e47f9980ddfbf180b
MD5 8d6738c3f6f28ef922cb0180bf737f6a
BLAKE2b-256 13444e89e7b8e5bf7e992c712e081ed6370c4a8cc1c3d7d9955e09e747301c1c

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