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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.25-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.25-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.25.tar.gz
Algorithm Hash digest
SHA256 9a6d55968404ff9d5877fe03e6cb85b17ef56c6b629590c6abce3c17153c2ff0
MD5 d3ef49c95ff949aac70441afd1c75f9c
BLAKE2b-256 653b986e592b21f1a2597e808094a458b84404cc224ac42ce277c6059a5f87b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.25-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.10

File hashes

Hashes for tower-0.3.25-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 6b72d994a3fe2613572dfc29fa7c0282c2f103d55316e51e39f28051ce9ce75b
MD5 85a884d70c930da06209512f8482a161
BLAKE2b-256 4a0a73f09690411a928e30c9313fc353677527ea3557adbbcf6b8e4e8fafda20

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.25-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.10

File hashes

Hashes for tower-0.3.25-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 30d80b6f3ae2a182a0fd6fe50a8a2d71d3586da1e0ba912cbedbf6e56f2076f9
MD5 500c7cd94d263ed143546a93a8598e90
BLAKE2b-256 9a67d8428ede0bc53c99cdd3ee8c1cc06b70b92656916b170d9b3dc879b96dbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f18f2dbd3ed22bd924dc38255f0afbf770ab1ad48df88ea81dd67bc5620cc8e0
MD5 8e5a5af0773161a065d3def80c4228c8
BLAKE2b-256 99c236a4a0a446333992ce25f646f2a52749ea70e16e79a84e41eb557ab8315e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 255555bbca1b74033ffbccd1f9bcfe7d414427e43f250fc397642cd22e73ab1c
MD5 9d2a3e42ddf5f7c370434ba08ef38756
BLAKE2b-256 12e7631c02c46122de8e7d6bec023d55f64ae7a56788c67dc8c93c8446e9802d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6c700effa986b5cae1428f1644b48e823e1b2d93a3f33f0049f01d9a0584ba41
MD5 cba07cff32b892ed05f8ee18f67e0f87
BLAKE2b-256 f044eebb22eebdd8690b50d16c02423384426e4259c1b66e1d53ce564e075dac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7af07fd2664401ca9000406fc488fdf48fe7abf47fdba9563afe4d86cec2e6a1
MD5 a10031f4ff676801a06d0556a71e314d
BLAKE2b-256 5b842a8f08863458017ad69e96b9bcdaec1cc9e12275106ea8c349ca10e9fb87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 753e27479798ef3c772b6e569141e7994b7644b6aed8184bce66a513548787ce
MD5 eb6889e49edb75b1bf8c73d8a9323e99
BLAKE2b-256 8b4e1830a0356e466eea13ac46fef95117d88d9be39f36c4ed66a87a631cb984

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 321bb4e88713259aec7bc9bce48b8f92b09180b4f9f7fb0f5d27556c08f6dd8f
MD5 b56274b9697a3eaa05bdc0b8bc5a558c
BLAKE2b-256 d374561effd3d420dc1315be08746d5959b8430bb22d7c804ac2ae6110f88c69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d7375be9e8feea825a99208b652388ac1d72952e91af55998cf8118da3437c4f
MD5 3ebe0555bc98cec8ef0c0089475e466b
BLAKE2b-256 cad29be69f30731f146ab2bf62964b893cfb0c825b316bc07c47ed3715981c52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b25eb305f8ae36a7cc990dc2b3d4af61fcbb1c15a236529adca1de5f2f7b286e
MD5 acaa1c7f80c1985d4022545937aba001
BLAKE2b-256 ee5842b5200f589b7795c6ec6df5d0d090b8f3dcce85aad5da59a0d77a12085a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1da734fbf25b67194e06a9aaf28492bcdc0fbf7cbfbb450a41411bc2abbdc2db
MD5 11e5c8cfc083855f5a1ccd38b3d451f9
BLAKE2b-256 358a7a16e5d9530d5197a74358a45d951b896c1fe3b61166b6437fa194677862

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.25-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 bde3d63545a881c5b383757dbc98af99f1b3ab55399bcd9230d4061e38ec8d37
MD5 d393c59bbcc59883bd5f3a31e25f4d1f
BLAKE2b-256 63cb3b42d29a5380feb52bfacd80173c926665aa09ac460d4b2a2ea4774b70c9

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