AI prompts
base on Ecash management tool <!-- <img src="https://github.com/HarborWallet/harbor/assets/132156916/899ad35c-0bf9-4341-a0df-231ce81a9a65" width=25% height=25%> -->
<img src="https://blog.mutinywallet.com/content/images/size/w2000/2024/05/harbor-preview.jpeg" width=100% height=100%>
# Harbor
Harbor is an ecash desktop wallet for better bitcoin privacy. Use this tool to interact with ecash mints, moving money in and out using existing Bitcoin wallets. As you use mints, you may be able to increase the privacy of your money. Harbor also aims to demystify ecash mints for users and make them easier to use.
Highlights:
- Ecash - digital payments privacy technology
- Bitcoin - on-chain and lightning
- Privacy - everything runs over tor
- Multi-mint - spread funds over multiple mints
- Automation - can run in the background and move your funds automatically
**NOTE:** This is alpha software that could rapidly change in feature set. There is risk of losing funds. Compile and run at your own risk.
### Compatibility
Harbor is a desktop app built in Rust, using the [iced](https://iced.rs) framework, that runs on Mac, Windows, and Linux. It currently supports [Fedimint](https://fedimint.org), Bitcoin, and Lightning. (We see you, Cashu š)
Binaries will be available in the future. For now you need to compile it yourself following the instructions below.
<img src="https://harbor.cash/screens/home.png" width=50% height=50%>
## Building
1. Clone the `HarborWallet/harbor` repo and `cd` into it.
```
git clone <harbor git URL> harbor
cd harbor
```
2. Install NixOS on your machine if you do not have it already.
ā ļø NOTE: Nix OS support on linux environments is still in progress, this may or may not work for you yet: https://github.com/HarborWallet/harbor/issues/7
```
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
// Follow any Nix installation instructions in the terminal, including post install steps.
```
3. Everything is done in a nix develop shell for now:
```
nix develop
```
4. Run the unit tests
```
just test
```
5. Build and Run
If you're on linux you may need to exit the nix shell to be able to run the program.
```
// debug build
just run
```
```
// release build
just release
```
**NOTE**: The first password you type in the box is saved as your password. There will be a proper onboarding workflow in the future.
#### Database Changes
Reset local DB (for init, schema generation, etc.)
```
just reset-db
```
## Feedback & Support
A product like this is unique. We need all the feedback, help, and support we can get. We believe in building a tool like this out in the open as fully open-sourced MIT code that is freely available and does not depend on a centralized coordinator or single developer. However, we're unable to gain insights into how people use this tool, whether users like it or how many users even exist.
Therefore, we need your help. For one, we need feedback. Do you want to use a tool like this? What features are most important to you, and what do you want? Please use the discussion boards here on GitHub or the [Harbor channel on our Discord](https://discord.gg/5fFBKkcW). This will primarily drive the Harbor feature set.
Building free and open-source software is not free to us developers. While we believe in this tool's mission, we must rely on donations. We cannot profit from transactions for this service, and it must be fully open-sourced for this community to use it.
Visit our [Geyser funding page](https://geyser.fund/project/harbor). Any donations are greatly appreciated for funding development and signaling that it's a valuable tool to you.
", Assign "at most 3 tags" to the expected json: {"id":"10544","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"