AI prompts
base on TUI explorer application for Amazon S3 (AWS S3) 🪣 # STU
[](https://crates.io/crates/stu)
[](https://ratatui.rs)
S3 Terminal UI 🪣
<img src="./img/demo.gif">
## About
STU, S3 Terminal UI, is a interactive terminal-based explorer for Amazon S3 (AWS S3).
With STU, you can browse buckets and objects directly from your terminal, preview files, and download them with ease.
STU provides the following features:
- Recursive object downloads
- Previews with syntax highlighting for text files and inline rendering for images
- Access to previous object versions
- Customizable key bindings
- Support for S3-compatible storage
Check out the [Features](https://lusingander.github.io/stu/features/index.html) section for more details!
## Documentation
For detailed usage, configuration, and advanced features, see the [full documentation](https://lusingander.github.io/stu/).
## Installation
If you're using Cargo:
```
$ cargo install --locked stu
```
For other download options, see [Installation](https://lusingander.github.io/stu/getting-started/installation.html).
## Usage
After installation, run the following command:
```
$ stu
```
Basically, you can use it in [the same way as the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).
In other words, if the default profile settings exist or [the environment variables are set](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html), you do not need to specify any options.
### Options
```
STU - S3 Terminal UI
Usage: stu [OPTIONS]
Options:
-r, --region <REGION> AWS region
-e, --endpoint-url <URL> AWS endpoint url
-p, --profile <NAME> AWS profile name
-b, --bucket <NAME> Target bucket name
-P, --prefix <PREFIX> Prefix for object keys
--path-style <TYPE> Path style type for object paths [default: auto] [possible values: auto, always, never]
--debug Enable debug logs
-h, --help Print help
-V, --version Print version
```
For details on each option, see [Command Line Options](https://lusingander.github.io/stu/getting-started/command-line-options.html).
### Keybindings
The basic key bindings are as follows:
| Key | Description |
| -------------------- | ---------------------------- |
| <kbd>Ctrl-C</kbd> | Quit app |
| <kbd>Enter</kbd> | Confirm / Open selected item |
| <kbd>Backspace</kbd> | Go back to previous |
| <kbd>j/k</kbd> | Select item / Scroll |
| <kbd>?</kbd> | Show help |
Detailed operations on each view can be displayed by pressing `?` key.
You can customize your own keybindings.
See [Custom Keybindings](https://lusingander.github.io/stu/keybindings/custom-keybindings.html) for more information.
### Config
Config is loaded from `$STU_ROOT_DIR/config.toml`.
- If `STU_ROOT_DIR` environment variable is not set, `~/.stu` is used by default.
- If the `STU_ROOT_DIR` directory does not exist, it will be created automatically.
- If the config file does not exist, the default values will be used for all items.
- If the config file exists but some items are not set, the default values will be used for those unset items.
For detailed information about the config file format, see [Config File Format](https://lusingander.github.io/stu/configurations/config-file-format.html).
## Screenshots
### Bucket list
<img src="./img/bucket-list.png" width=400> <img src="./img/bucket-list-filter.png" width=400> <img src="./img/bucket-list-sort.png" width=400> <img src="./img/bucket-list-copy.png" width=400> <img src="./img/bucket-list-download-confirm.png" width=400>
### Object list
<img src="./img/object-list-simple.png" width=400> <img src="./img/object-list-hierarchy.png" width=400> <img src="./img/object-list-many.png" width=400> <img src="./img/object-list-filter.png" width=400> <img src="./img/object-list-sort.png" width=400> <img src="./img/object-list-dir-copy.png" width=400> <img src="./img/object-list-file-copy.png" width=400> <img src="./img/object-list-download-confirm.png" width=400>
### Object detail
<img src="./img/object-detail.png" width=400> <img src="./img/object-version.png" width=400> <img src="./img/object-download.png" width=400> <img src="./img/object-details-copy.png" width=400>
### Object preview
<img src="./img/object-preview.png" width=400> <img src="./img/object-preview-image.png" width=400> <img src="./img/object-preview-encoding.png" width=400>
## Contributing
To get started with contributing, please review [CONTRIBUTING.md](CONTRIBUTING.md).
Contributions that do not follow these guidelines may not be accepted.
## Related projects
- [DDV](https://github.com/lusingander/ddv) - Terminal DynamoDB Viewer ⚡️
## License
MIT
", Assign "at most 3 tags" to the expected json: {"id":"13321","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"