AI prompts
base on 🚤 Cross-platform, unofficial CLI for Cloudflare Warp # wgcf
> wgcf is an unofficial, cross-platform CLI for [Cloudflare Warp](https://1.1.1.1/)
![](https://img.shields.io/drone/build/ViRb3/wgcf)
![](https://img.shields.io/github/issues/ViRb3/wgcf)
![](https://img.shields.io/github/downloads/ViRb3/wgcf/total)
![](https://img.shields.io/github/languages/code-size/ViRb3/wgcf)
## Features
- Register new account
- Change license key to use existing Warp+ subscription
- Generate WireGuard profile
- Check account status
- Print trace information to debug Warp/Warp+ status
## Download
You can find pre-compiled binaries on the [releases page](https://github.com/ViRb3/wgcf/releases).
## Usage
Run `wgcf` in a terminal without any arguments to display the help screen. All commands and parameters are documented.
### Register new account
Run the following command in a terminal:
```bash
wgcf register
```
The new account will be saved under `wgcf-account.toml`
### Generate WireGuard profile
Run the following command in a terminal:
```bash
wgcf generate
```
The WireGuard profile will be saved under `wgcf-profile.conf`. For more information on how to use it, please check the official [WireGuard Quick Start](https://www.wireguard.com/quickstart/).
#### Maximum transmission unit (MTU)
To ensure maximum compatibility, the generated profile will have a MTU of 1280, just like the official Android app. If you are experiencing performance issues, you may be able to improve your speed by increasing this value. For more information, please check [#40](https://github.com/ViRb3/wgcf/issues/40).
### Add a license key
If you have an existing Warp+ subscription, for example on your phone, you can bind the account generated by this tool to your phone's account, sharing its Warp+ status. Please note that there is a limit of 5 maximum devices linked at a time. You can remove linked devices from the 1.1.1.1 app on your phone.
> [!CAUTION]
> Only subscriptions purchased directly from the official 1.1.1.1 app are supported. Keys obtained by any other means, including referrals, will not work and will not be supported.
First, get your Warp+ account license key. To view it on Android:
1. Open the `1.1.1.1` app
2. Click on the hamburger menu button on the top-right corner
3. Navigate to: `Account` > `Key`
Now, back to wgcf.
> [!WARNING]
> If you have an existing account, you will need to delete it and create a new one ([!355](https://github.com/ViRb3/wgcf/pull/355), [!425](https://github.com/ViRb3/wgcf/pull/425)). Otherwise, just run the same command to make your first account:
>
> ```wgcf register
> wgcf register
> ```
Immediately, before running any other commands, add your key to `wgcf-account.toml`. Finally, run:
```bash
wgcf update
wgcf generate
```
### Check device status
Run the following command in a terminal:
```bash
wgcf status
```
### Verify Warp/Warp+ works
Connect to the WireGuard profile [generated](#generate-wireguard-profile) by this tool, then run:
```bash
wgcf trace
```
If you look at the last line, it should say `warp=on` or `warp=plus`, depending on whether you have Warp or Warp+ respectively.
## Development
### Sub-packages
- [api_tests](api_tests/main.go) - Tests for API documentation generation
- [spec_format](spec_format/main.go) - OpenAPI3 specification formatter to post-process the spec generated by Optic
### API
This project uses [Optic](https://github.com/opticdev/optic) to automatically generate API documentation using the tests defined in [api_tests](api_tests/main.go). These tests cover all endpoints used by wgcf. The documentation is exported as an OpenAPI3 [specification](openapi-spec.json), which is then used with [openapi-generator](https://openapi-generator.tech/) to generate the Go client API code under [wgcf/openapi](openapi/client.go).
To update the API documentation, [install Optic](https://github.com/opticdev/optic/releases/latest), then run:
```bash
api start
```
Resolve and save all the differences in the Web UI.
To regenerate the Go client API code, [install openapi-generator](https://openapi-generator.tech/docs/installation), then run:
```bash
bash generate-api.sh
```
This script supports both Linux and WSL.
## Notice of Non-Affiliation and Disclaimer
We are not affiliated, associated, authorized, endorsed by, or in any way officially connected with Cloudflare, or any of its subsidiaries or its affiliates. The official Cloudflare website can be found at https://www.cloudflare.com/.
The names Cloudflare Warp and Cloudflare as well as related names, marks, emblems and images are registered trademarks of their respective owners.
", Assign "at most 3 tags" to the expected json: {"id":"5517","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"