Skip to content

Comments

Update the Readme#204

Open
datancoffee wants to merge 6 commits intodevelopfrom
feature/tow-1575-cli-improve-the-tower-cli-readme
Open

Update the Readme#204
datancoffee wants to merge 6 commits intodevelopfrom
feature/tow-1575-cli-improve-the-tower-cli-readme

Conversation

@datancoffee
Copy link
Contributor

Split old README into Overview, Advanced Installation Options, and Contributor Setup.
The Nix and Devenv setup is a little advanced to be on the main README, so, moved to a separate file and linked.
Added Features, Use Cases, Demos, Quickstarts to README

@coderabbitai
Copy link

coderabbitai bot commented Feb 20, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/tow-1575-cli-improve-the-tower-cli-readme

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@datancoffee datancoffee changed the title Feature/tow 1575 cli improve the tower cli readme Update the Readme Feb 20, 2026
Copy link
Contributor

@bradhe bradhe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it looks good! Let's ship it. Also a reminder that we need to document the dbt stuff in docs.tower.dev.

Copy link
Member

@jo-sm jo-sm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only had a read through the readme.md file, and while I think moving some of the things like how to develop into their own doc are fine, I would highly suggest to remove any Tower marketing sounding stuff from the readme (e.g. "what Tower gives you"). When I look at readmes for tools, while I accept a little bit of non-dev fluff from a tool that's created/maintained by a SaaS company, it's a huge turn off to be sold the product when I just want to know how to use your tool, since I've likely already looked at your website and have a general understanding of the product/tool and just want to use it.

Comment on lines 167 to +191

##### Claude Code
## How It Works

Add the Tower MCP server to Claude Code using SSE transport:

```bash
claude mcp add tower http://127.0.0.1:34567/sse --transport sse
```

Or with the JSON configuration directly:

```json
{
"mcpServers": {
"tower": {
"url": "http://127.0.0.1:34567/sse",
"transport": "sse"
}
}
}
┌────────────┐ ┌─────┐ ┌──────────────────────┐ ┌────────┐ ┌───────────┐
│ Developer │ ──► │ CLI │ ──► │ Tower Control Plane │ ──► │ Runner │ ──► │ Lakehouse │
└────────────┘ └─────┘ └──────────────────────┘ └────────┘ └───────────┘
```

For custom ports, adjust the URL accordingly (e.g., `http://127.0.0.1:8080/sse`).

##### Cursor

[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=tower&config=eyJ1cmwiOiJodHRwOi8vMTI3LjAuMC4xOjM0NTY3L3NzZSJ9)
With an AI coding assistant (e.g. Claude, Cursor), the flow goes through the Tower MCP server:

If that doesn't work, try opening the following link in your browser or in your terminal with `open` on macOS, or `xdg-open` on Linux:
```
cursor://anysphere.cursor-deeplink/mcp/install?name=tower&config=eyJ1cmwiOiJodHRwOi8vMTI3LjAuMC4xOjM0NTY3L3NzZSJ9
┌────────────┐ ┌────────┐ ┌──────────────────┐ ┌──────────────────────┐
│ Developer │ ──► │ Claude │ ──► │ MCP (Tower CLI) │ ──► │ Tower Control Plane │ ──► ...
└────────────┘ └────────┘ └──────────────────┘ └──────────────────────┘
```

Or manually, add this to your Cursor MCP settings (`mcp.json`):
- **Apps** - Python + `requirements.txt` + **Towerfile** (entrypoint, source). Any Python; no SDK required.
- **Deploy** - `tower deploy` builds, uploads, stores encrypted. Tower cannot read your code.
- **Secrets** - `tower secrets`; env vars in runner only (AES-256).
- **Runtime** - Runner pulls app/config, decrypts, runs in sandboxed Python. Same model locally and in cloud.

```json
{
"mcpServers": {
"tower": {
"url": "http://127.0.0.1:34567/sse"
}
}
}
```
[How Tower works](https://docs.tower.dev/docs/architecture/how-tower-works).

##### VS Code
---
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't really understand what this section is trying to communicate. I'd recommend removing it completely.

Suggested change
##### Claude Code
## How It Works
Add the Tower MCP server to Claude Code using SSE transport:
```bash
claude mcp add tower http://127.0.0.1:34567/sse --transport sse
```
Or with the JSON configuration directly:
```json
{
"mcpServers": {
"tower": {
"url": "http://127.0.0.1:34567/sse",
"transport": "sse"
}
}
}
┌────────────┐ ┌─────┐ ┌──────────────────────┐ ┌────────┐ ┌───────────┐
│ Developer │ ──► │ CLI │ ──► │ Tower Control Plane │ ──► │ Runner │ ──► │ Lakehouse │
└────────────┘ └─────┘ └──────────────────────┘ └────────┘ └───────────┘
```
For custom ports, adjust the URL accordingly (e.g., `http://127.0.0.1:8080/sse`).
##### Cursor
[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=tower&config=eyJ1cmwiOiJodHRwOi8vMTI3LjAuMC4xOjM0NTY3L3NzZSJ9)
With an AI coding assistant (e.g. Claude, Cursor), the flow goes through the Tower MCP server:
If that doesn't work, try opening the following link in your browser or in your terminal with `open` on macOS, or `xdg-open` on Linux:
```
cursor://anysphere.cursor-deeplink/mcp/install?name=tower&config=eyJ1cmwiOiJodHRwOi8vMTI3LjAuMC4xOjM0NTY3L3NzZSJ9
┌────────────┐ ┌────────┐ ┌──────────────────┐ ┌──────────────────────┐
│ Developer │ ──► │ Claude │ ──► │ MCP (Tower CLI) │ ──► │ Tower Control Plane │ ──► ...
└────────────┘ └────────┘ └──────────────────┘ └──────────────────────┘
```
Or manually, add this to your Cursor MCP settings (`mcp.json`):
- **Apps** - Python + `requirements.txt` + **Towerfile** (entrypoint, source). Any Python; no SDK required.
- **Deploy** - `tower deploy` builds, uploads, stores encrypted. Tower cannot read your code.
- **Secrets** - `tower secrets`; env vars in runner only (AES-256).
- **Runtime** - Runner pulls app/config, decrypts, runs in sandboxed Python. Same model locally and in cloud.
```json
{
"mcpServers": {
"tower": {
"url": "http://127.0.0.1:34567/sse"
}
}
}
```
[How Tower works](https://docs.tower.dev/docs/architecture/how-tower-works).
##### VS Code
---

Comment on lines +195 to +201
- [x] Code-first orchestration
- [x] Observability
- [x] Self-hosted runners
- [x] Interactive apps
- [ ] Organizations
- [ ] RBAC
- [ ] Iceberg ingestion
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why this is relevant to someone looking at the readme of the CLI?

If you need to get the latest OpenAPI SDK, you can run
`./scripts/generate-python-api-client.sh`.
- **License:** [MIT](LICENSE).
- Actively maintained; issues responded to promptly.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Actively maintained; issues responded to promptly.

This is a show, don't tell kinda thing ;)

## Testing
We use pytest to run tests. Copy `pytest.ini.template` to `pytest.ini` and
replace the values of environment variables
[Full install options and optional features →](INSTALL-AND-REFERENCE.md)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[Full install options and optional features →](INSTALL-AND-REFERENCE.md)
[Full installation options and optional features →](INSTALL-AND-REFERENCE.md)

Co-authored-by: Ben Lovell <ben@tower.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants