# Overview

## Architecture

Tapd is the official implementation of[ Taproot Assets Protocol](https://docs.lightning.engineering/the-lightning-network/taproot-assets/taproot-assets-protocol), but with an issue that end users must deploy an own Tapd and LND locally to master their wallet keys; otherwise, they have to escrow their wallet keys to the service provider who is running [Tapd](https://github.com/lightninglabs/taproot-assets) and [LND](https://github.com/lightningnetwork/lnd) locally.

BitTap solves this issue by introducing another layer, which Bittapd stands for. Bittapd is a service deployed on the Tapd side, working like an Taproot Assets Protocol's agent to help facilitate the interactions between Tapd and end users which have their self-custodial keys.

The architecture of BitTap Wallet shows below. End users aka. Browser Extension Wallet don't communicate with Tapd directly, instead they call Bittapd's API for everything except that they will  generate their own private/public keys for BTC and Taproot Assets.&#x20;

<figure><img src="/files/XExvF0y5uatBZ0PxTDSc" alt=""><figcaption><p>BitTap wallet architecture</p></figcaption></figure>

End users generate and manage the keys, and Bittapd don't need private keys to work. When private keys are needed to sign a transaction, Bittapd will ask for it to be conducted on the wallet side by the end user. In this way, BitTap wallet is a truly non-custodial wallet for Taproot Assets.

## API Resources

While BitTap team has developed the first non-custodial browser extension wallet for Taproot Assets in the world, we would like to open the capability to our partners to build truly decentralized web3 together so that in our partners' products, end users can truly own their Taproot Assets as well.&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.bittap.org/developer-guides/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
