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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.21rc1.tar.gz
Algorithm Hash digest
SHA256 f2048e1ca30f370d20e2afb5ad04de261430dfdfad1cf3da34fd81ebb3de07f6
MD5 c52b562321b49244db70dcf64122e30e
BLAKE2b-256 fae2a3f759ff4b3dd00fd9eb7cd7173ca5b4ae760b56cdaa615789b6efcc65a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 ca5b35a06cadbc6beb841667070e221e0da22662735b101d5c3e9631d201eda0
MD5 23d9100bf7c7bc2bfd985fd57b58323c
BLAKE2b-256 3aaa8fcc4eac0f91c876b920b24ef9a22ea0074ba9bdf792093debb76da5ef9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 62b79788237d2f711d88cfce55a70a4a74c87432ed9be9262d1321e3c7d2a5db
MD5 23debbcada568d7e085221017f0c3eab
BLAKE2b-256 88ce1f07bdfcfaee6a9c3957d222d3c6006ec8be0e4de94c83b97cd60e8003f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8981b6de09068071decc19e4250b7f14b6d360efc768715ab445de5cae8fbd3b
MD5 c650266dc0ddb1bb137906b80b14f46f
BLAKE2b-256 23145a39158db01c9c0012bd0fb9962688a5a4db5bebb8897b67ec673ac25261

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8652982ef3e09821f79410197f5e65ebae7b5b774cd84309850ff396fb891891
MD5 a5b953849cc036dc0e47c6852eacbff0
BLAKE2b-256 5c2bd46f597d129ad3de7c538197f3098597f0bd4f36ef878480ddb0645dcc5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a151383d0c0ef9e52d4d6d2bce6a3f45b434242080d3e7f5ccb701206cb555f2
MD5 e1f79670b5c588bda5854915f81702ea
BLAKE2b-256 b2cdbf71dd9f26f2b4c3345074b9ac92f34a23a4a00f297b7c082dee8269441a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4be56ef3d0a12031abbee5e0bc5525a9219f950ced187db5a01a192866e2d27f
MD5 56675dcae0778addb8df9d03e52f1dae
BLAKE2b-256 6638b884f257bc5ef9211455fd6908668753501bd96ea05ed9aa2f43fe1ab9b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 797dcad154227d23f529956bd20fc54ccca686ac371f1a4d2a40393f518bab64
MD5 f4c377efa236487c497d1107d5a24b74
BLAKE2b-256 bf1361835bef6c2c4dff3740361f163d6722b2c0059a07e328a89910b9b5a79f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6b4a8dfd638f0518d4c2eb724b0a03a6457c0103a8ce301ac52f0c5a6835b46b
MD5 27d4471105a54c762713b8a87b95b3b3
BLAKE2b-256 9d5a3c94d86440928dd77c6c00b89eb47960333817f1fac76071ca06d5d35bc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1ac92af3487e9db4488d242150de806ce9bde473e03d9d3f8d548a2a2d3b8151
MD5 b3304a7c7e7ffe915388d0613711e7be
BLAKE2b-256 10485a5dc60439d0ed25384fd3edea73bf8286c48f6db39f23ac902c05af3ab0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2dadef54b145e49a989c507cb76a7e9fa7651c2ab45c28306cac363abaab5845
MD5 aa846dce886c1d97e34ecfc9d58bc6d3
BLAKE2b-256 960eddf96ac965ecbfba66e762bad07509593fa153e8984516d99d272376073f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7c09698d8f4f392bc55e3d1a77fe9bd325babfe9e5eddff410ab83305046a350
MD5 42647aeca221bd16d227085a8f1d7c44
BLAKE2b-256 4cccd2216886bb211930985d7ee455ea1af400808d425fe83d07f44a3823e046

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.21rc1-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 17c03a05a435799de6983947d90f857406611086c131597220d166b9ec059620
MD5 b501a5f6a63e58fdc00cef8bd4ea494a
BLAKE2b-256 5521ed36455b18e704cced7ffea0b3e708c6bfc1e094dab20aaae0bc46f046e9

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