{"id":26194204,"url":"https://github.com/crossmint/agent-launchpad-starter-kit","last_synced_at":"2025-09-29T07:54:06.595Z","repository":{"id":274833247,"uuid":"920299693","full_name":"Crossmint/agent-launchpad-starter-kit","owner":"Crossmint","description":"A secure, non-custodial Next.js application for deploying AI agents with integrated wallet functionality","archived":false,"fork":false,"pushed_at":"2025-06-01T09:59:24.000Z","size":7430,"stargazers_count":25,"open_issues_count":9,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T18:44:15.054Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Crossmint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-21T22:50:08.000Z","updated_at":"2025-06-07T18:33:43.000Z","dependencies_parsed_at":"2025-01-29T17:27:39.348Z","dependency_job_id":"8e365b17-aef5-4e05-a525-0e948a39ef44","html_url":"https://github.com/Crossmint/agent-launchpad-starter-kit","commit_stats":null,"previous_names":["crossmint/agent-launchpad-starter-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Crossmint/agent-launchpad-starter-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fagent-launchpad-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fagent-launchpad-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fagent-launchpad-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fagent-launchpad-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Crossmint","download_url":"https://codeload.github.com/Crossmint/agent-launchpad-starter-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Crossmint%2Fagent-launchpad-starter-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277483296,"owners_count":25825561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-29T02:00:09.175Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-12T01:55:42.835Z","updated_at":"2025-09-29T07:54:06.579Z","avatar_url":"https://github.com/Crossmint.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- Improved compatibility of back to top link --\u003e\n\n\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eAgent Launchpad Starter Kit\u003c/h1\u003e\n\n  \u003cp align=\"center\"\u003e\n    Example webapp that showcases how to deploy AI agents with non-custodial wallets. It uses Crossmint smart wallets and deploys agents in a TEE for secure key management.\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/crossmint/agent-launchpad-starter-kit/issues/new?labels=bug\u0026template=bug-report---.md\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/crossmint/agent-launchpad-starter-kit/issues/new?labels=enhancement\u0026template=feature-request---.md\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003e **ℹ️ Beta Software Notice**\n\u003e\n\u003e This codebase is currently in beta and has not undergone formal security audits. It serves as an illustration and blueprint for implementing non-custodial wallet architectures in AI agent systems. Before using this in production:\n\u003e\n\u003e 1. **Conduct Security Audits**: Thoroughly review and audit the codebase, especially the wallet management and TEE deployment components\n\u003e 2. **Stay Updated**: Star and watch this repository to receive updates as we add functionality and enhance security measures\n\u003e\n\u003e We are actively improving the security and functionality of this codebase. Your feedback and contributions are welcome!\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#system-architecture\"\u003eSystem Architecture\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#key-features\"\u003eKey Features\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#why-non-custodial\"\u003eWhy Non-Custodial?\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#get-started\"\u003eGet Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#pre-requisites\"\u003ePre-requisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#local-setup\"\u003eLocal Setup\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#environment-variables\"\u003eEnvironment Variables\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#supported-chains\"\u003eSupported Chains\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#evm-smart-wallets\"\u003eEVM Smart Wallets\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#solana-smart-wallets\"\u003eSolana Smart Wallets\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n    \u003ca href=\"#deploying-to-production\"\u003eDeploying to Production\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#building-the-docker-image\"\u003eBuilding the Docker Image\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#production-deployment-checklist\"\u003eProduction Deployment Checklist\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## Roadmap\n\n- [x] Solana Smart Wallets (~Feb 10)  \n- [ ] Passkey support for Solana Smart Wallets (~Mar 10)  \n- [ ] Add support for more TEE networks: Marlin, Lit, etc (~Mar 10)  \n- [ ] Sample code for user-initiated wallet actions  \n- [ ] Non-custodial agent software updates\n\n## About The Project\n\n![Crossmint Agent Wallets](https://github.com/user-attachments/assets/10bdd357-38bb-4661-8d01-0568d0440263)\n\nThe goal of this project is to help launchpads and other agent hosting patforms to easily\ndeploy AI agents with wallets, following an architecture that is non-custodial for the launchpad,\nyet allows the agent owner and user to control the wallet.\n\nIt implements the architecture proposed on [this blog](https://article.app/alfonso/agent-launchpad-wallet-architecture).\n\n### System Architecture\n![System Architecture](https://github.com/user-attachments/assets/2570bb5d-144d-420a-84b2-8290f8a2f7f2)\n\n\n### Key Features:\n\n- Agent framework agnostic. Compatible with ElizaOS, Zerepy, GAME, Langchain, Vercel AI, and more.\n- Chain agnostic. Currently works for all EVM chains, with Solana coming soon.\n- Non-custodial for the launchpad: launchpad owner can't access the agent's funds / wallet. Required\n  for regulatory compliance in the US.\n- Dual-key architecture. Both agent owner and agent itself can control the wallet.\n- The frontend uses NextJS and the agents are deployed into a TEE by Phala network\n\n### Why Non-Custodial?\n\nWhen developing AI agents with cryptocurrency capabilities, two critical challenges emerge:\n\n**1. Security Considerations:**  \nThe traditional custodial approach creates significant security risks. If a launchpad platform holds custody of agent wallets, a single security breach could compromise all agents' funds. Non-custodial architecture eliminates this single point of failure, ensuring that each agent maintains independent control of its assets.\n\n**2. Regulatory Compliance:**  \nIn jurisdictions like the United States, platforms that have the ability to control or transmit user funds may fall under money transmitter regulations. This creates complex regulatory requirements and potential legal exposure. Non-custodial architecture helps platforms avoid classification as money transmitters by ensuring they never have direct access to or control over user funds.\n\n## Get started\n\n![Agent Launchpad Starter Kit](https://github.com/user-attachments/assets/9f55da35-b66b-4afc-a271-0fd7379d9237)\n\n### Pre-requisites\n\n1. [Install pnpm](https://pnpm.io/installation) as package manager\n2. [Install OrbStack](https://orbstack.dev/) for local container management\n     - Launch the Orbstack app on your computer and select \"Docker\" from the OrbStack setup menu\n3. Create a developer project in Crossmint [staging console](https://staging.crossmint.com/console) and [production](https://www.crossmint.com/console)\n\n### Local Setup\n\n1. Obtain free API Keys from the [Staging environment of Crossmint Console](https://staging.crossmint.com). You'll need both a server-side and client-side API Key. Refer to these instructions to [Get a server-side API Key](https://docs.crossmint.com/introduction/platform/api-keys/server-side) and [a client-side one](https://docs.crossmint.com/introduction/platform/api-keys/client-side).\n\n   - Ensure the Wallet Type is set to `Smart wallet` under Settings \u003e General\n   - Ensure API keys have the required scopes:\n     - Server-side: All 'wallet API' scopes\n     - Client-side: All 'wallet API' and 'users' scopes. Whitelist `http://localhost:3001` as an origin and check the \"JWT Auth\" box\n\n2. Webapp setup\n\n   ```bash\n   cd launchpad-starter-next-app\n   pnpm install\n   cp .env.example .env\n   ```\n\n   Enter your Crossmint API keys in the `.env` file. Leave the Docker URL and Phala API key as is for now.\n\n   Then start the webapp:\n\n   ```bash\n   pnpm dev\n   ```\n\nThe Next.js app will be available at `http://localhost:3001`\n\n3. Agent setup\n\n   Open a new terminal in the project root folder, and run:\n\n   ```bash\n   cd agent-tee-phala/image\n   pnpm install\n   ```\n\n   Then, build the image code:\n\n   ```bash\n   pnpm build\n   ```\n\n  \u003e **Note**:  When running the nextjs app, the docker image will build and deploy in a simulated TEE environment. This simulated environment allows you to test your docker image code locally before deploying to production TEEs \u0026 Docker hub.\n\n\n### Environment Variables\n\nPlease refer to the [`.env.example`](launchpad-starter-next-app/.env.example) file for more information.\n\n#### Supported Chains\n\nFor an exhaustive list of supported chains on Crossmint, please refer to the [Supported Chains](https://docs.crossmint.com/introduction/supported-chains) doc.\n\n#### EVM Smart Wallets\n\n\u003e **Note on EVM Smart Wallets**: \n\u003e The default implementation uses Crossmint's Smart Wallets for EVM chains, which requires setting the `ALCHEMY_API_KEY` environment variable. This API key is used to connect to the EVM chain and sign transactions on behalf of the EVM Smart Wallet.\n\u003e To generate an API key for signing EVM Smart Wallet transactions:\n\u003e 1. Create an account on [Alchemy](https://www.alchemy.com/)\n\u003e 2. Create a new project and copy the API key\n\u003e 3. Set the `ALCHEMY_API_KEY` environment variable in your `.env` file:\n\u003e    ```\n\u003e    ALCHEMY_API_KEY=your_api_key\n\n#### Solana Smart Wallets\n\n\u003e **Note on Solana Smart Wallets**: \n\u003e The default implementation uses Crossmint's Smart Wallets for Solana, which requires generating a keypair and setting the `NEXT_PUBLIC_SOLANA_SIGNER_PUBLIC_KEY` and `SOLANA_SIGNER_PRIVATE_KEY` environment variables. This keypair will be used to sign transactions on behalf of the Solana Smart Wallet.\n\u003e To generate a keypair for signing Solana Smart Wallet transactions:\n\u003e\n\u003e 1. Generate a new keypair using the [Solana Cookbook guide](https://solana.com/developers/cookbook/wallets/create-keypair)\n\u003e 2. Set both environment variables in your `.env` file:\n\u003e    ```\n\u003e    NEXT_PUBLIC_SOLANA_SIGNER_PUBLIC_KEY=your_public_key\n\u003e    SOLANA_SIGNER_PRIVATE_KEY=your_private_key\n\u003e    ```\n\u003e 3. Set the `NEXT_PUBLIC_PREFERRED_CHAIN` environment variable to `solana` in your `.env` file:\n\u003e    ```\n\u003e    NEXT_PUBLIC_PREFERRED_CHAIN=solana\n\u003e    ```\n\u003e\n\u003e If you prefer to use external wallets like Phantom instead, you can modify the wallet connection logic in the frontend code at `src/app/providers/wallet-provider.tsx`. See the [Solana Wallet Adapter](https://github.com/solana-labs/wallet-adapter) documentation for integrating external Solana wallets. The wallet provider currently uses a Solana keypair signer configuration, which you can replace with your preferred wallet connection method.\n\n## Deploying to Production\n\n### Building the Docker Image\n\nIn order to run the docker image within a TEE, we need to first build the image.\n\n1. From the root directory of this project, run the following command to build the Docker image: its important to use the `--platform linux/amd64` flag to ensure the image is built for the correct architecture.\n\n```bash\ndocker build --pull --rm -f 'agent-tee-phala/image/Dockerfile' --platform linux/amd64 -t '{your-image-name}:{version}' 'agent-tee-phala/image'\n```\n\nExample:\n\n```bash\ndocker build --pull --rm -f 'agent-tee-phala/image/Dockerfile' --platform linux/amd64 -t 'agentlaunchpadstarterkit:latest' 'agent-tee-phala/image'\n```\n\n2. Publish the image to Docker Hub.\nIn the [`launchpad-starter-next-app/src/server/services/container.ts`](launchpad-starter-next-app/src/server/services/container.ts), there's a inline comment that explains how to update the docker image name and version. Go to line 47 to find the instructions.\n\n### Production Deployment Checklist\n\n1. API Keys\n\n   - Replace staging API keys with production keys from [Crossmint Console](https://www.crossmint.com/console)\n   - Ensure API keys have the required scopes:\n     - Server-side: All 'wallet API' scopes\n     - Client-side: All 'wallet API' and 'users' scopes. Whitelist your webapp url as an origin and check the \"JWT Auth\" box.\n\n2. Security Checklist\n\n   - Verify and audit all code in your agent image folder to ensure it meets security standards\n   - Publish reproduceable build code to an open source repository for transparency\n   - Implement client-side checks to prevent agent deployments to TEEs that cannot remotely attest they are running audited code versions\n   - Configure TEE to disallow code upgrades without explicit end user approval (feature coming soon to Phala and Marlin)\n\n3. Deploy Agent to TEE (Phala Cloud)\n\n   - Create an account on [Phala Cloud](https://cloud.phala.network)\n   - Create a new project and copy the API key\n   - Update the `PHALA_CLOUD_API_KEY` in your webapp's environment variables to add your Phala Cloud API key\n     - NOTE: adding the API key to the environment variables will automatically use production environments in Phala Cloud.\n     - To use local environments, you can just leave `PHALA_CLOUD_API_KEY` empty.\n\n4. Deploy Webapp\n\n   - Deploy your Next.js application to your preferred hosting platform (Vercel, AWS, etc.)\n   - Set up environment variables in your hosting platform's dashboard\n\n5. Testing\n\n   - Verify wallet creation flow works end-to-end\n   - Test agent deployment and communication\n   - Confirm authentication and authorization are working as expected\n\n## Disclaimer\n\nThis software is provided \"AS IS\", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossmint%2Fagent-launchpad-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrossmint%2Fagent-launchpad-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrossmint%2Fagent-launchpad-starter-kit/lists"}