{"repo":"piotrostr/listen","free":true,"listed":false,"github":"https://github.com/piotrostr/listen","clone":"git clone https://github.com/piotrostr/listen.git","description":"DeFAI Swiss Army Knife","language":"TypeScript","stars":1085,"topics":["ai","dex","memecoins","rust","solana","trading"],"license":"AGPL-3.0","category":"trading_bot","readme_excerpt":"<p align=\"center\">\n<img src=\"listen-landing/public/listen-more.png\" width=\"35%\" />\n<br />\n</p>\n<p align=\"center\">\n<a href=\"https://docs.listen-rs.com/\"><img src=\"https://img.shields.io/badge/docs-API-blue.svg\" /></a> &nbsp;\n<a href=\"https://github.com/piotrostr/listen\"><img src=\"https://img.shields.io/github/stars/piotrostr/listen?style=social\" /></a>\n<a href=\"\"><img src=\"https://img.shields.io/badge/built_with-Rust-dca282.svg?logo=rust\" /></a>\n</p>\n\n<p align=\"center\">\n<code>listen</code> started sa Solana Swiss-Knife toolkit for algorithmic trading, its mission has become the go-to framework for AI crosschain portfolio management agents\n</p>\n<p align=\"center\">\nIt powers the <a href=\"https://app.listen-rs.com/\">Listen App</a>, check it out to see what <code>listen</code> framework is capable of\n\n## Listen Architecture\n\n```mermaid\ngraph TB\n    subgraph \"Rig Agent Kit by Listen\"\n        RAK[RIG Agent Kit]\n        RAK_MT[Multi-tenant Stream Manager]\n        RAK_WALLET[Delegated Wallet Manager]\n        RAK --> RAK_MT\n        RAK --> RAK_WALLET\n    end\n\n    subgraph \"Listen Trading Engine\"\n        LTE[Trading Engine]\n        ORDER_COL[Order Collector]\n        PIPE[Pipeline Executor]\n        EXEC[Order Executor]\n\n        ORDER_COL --> PIPE\n        PIPE --> EXEC\n        LTE --> ORDER_COL\n    end\n\n    subgraph \"Listen Data Service\"\n        LDS[Data Service]\n        SUB[Substreams Indexer]\n        DB[(Clickhouse OLAP)]\n        PRICE[Price Stream]\n\n        SUB -->|Index Solana Slots| DB\n        LDS --> PRICE\n        LDS --> DB\n    end\n\n    %% External Systems\n    MOBILE[Mobile App]\n    CHAIN((Blockchain))\n    PRIVY((Privy))\n    WALLET[(Solana/EVM Wallets)]\n\n    %% Connections\n    RAK -->|Tool Calls| CHAIN\n    RAK -->|Execute Trades| LTE\n    LDS -->|Pricing Updates| LTE\n    LDS -->|Enriched Data| MOBILE\n    MOBILE -->|User Intents| RAK\n    LTE -->|Sign & Send Tx| CHAIN\n    DB -->|Query Data| RAK\n    RAK_WALLET -->|Integration| PRIVY\n    PRIVY --> WALLET\n\n```\n\n## Features\n\n- 🔍 Real-time transaction monitoring\n- 💱 Multi-DEX swap execution (Pump.fun, Jupiter V6 API or Raydium)\n- 🚀 Blazingly fast transactions thanks to Jito MEV bundles\n- 📊 Price tracking and metrics\n- 🧰 Token management utilities\n- 📈 Performance monitoring with Prometheus integration\n\nAnd more!\n\nIt works plug'n'play with [$arc rig\nframework](https://github.com/0xPlaygrounds/rig) framework allowing AI Agents\ninteract with the Solana blockchain, see example:\n[src/agent.rs](https://github.com/piotrostr/listen/blob/main/src/agent.rs) and\nthe output [image](https://github.com/piotrostr/listen/blob/main/example.png).\n\nSome more docs on the agentic stuff: [rig-onchain-kit](https://0xplaygrounds.github.io/rig-onchain-kit/introduction.html)\n\nFor complete rundown of features, check out the CLI output of `cargo run` or the\n[documentation](https://docs.listen-rs.com/).\n\n## Quickstart\n\nTo play around with listen-rs, you can use the UI\n\nFill in the `.env.example` and `./dashboard/.env.example`, copy over to `.env` and `./dashboard/.env.example`, then\n\n```\ndocker compose up\n```\n\nYou can then access the dashboard over `http://localhost:4173`\n\n> [!WARNING]\n> listen-rs is undergoing rapid iterations, some things might not work and there could be breaking changes\n\n## Requirements\n\n1. **System Dependencies**\n\n   - Rust (with nightly toolchain)\n   - `protoc`\n   - `build-essential`\n   - `pkg-config`\n   - `libssl-dev`\n\n2. **Configuration**\n   - Copy `.env.example` to `.env`\n   - Set up `auth.json` for JITO authentication (optional, gRPC HTTP/2.0 searcher client)\n   - Populate `fund.json`\n\nBoth keypairs are in `solana-keygen` format, array of 64 bytes, 32 bytes\nprivate key and 32 bytes public key.\n\n## Quick Start\n\n```bash\n# Install dependencies\nsudo apt install protoc build-essential pkg-config libssl-dev\n\n# Build\ncargo build --release\n\n# Run services\n./run-systemd-services.sh\n```\n\n## Usage Examples\n\n### Transaction Monitoring\n\n```bash\ncargo run -- listen \\\n  --worker-count [COUNT] \\\n  --buffer-size [SIZE]\n```\n\n### Token Swapping\n\n```bash\ncargo run -- swap \\\n  --input-mint sol \\\n  --output-mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \\\n  --amount 10000000\n```\n\n> [!WARNING]\n> Default configuration is set for mainnet with small transactions. Ensure proper configuration for testnet usage and carefully review code before execution.\n\n## Metrics and Monitoring\n\nListen includes built-in metrics exposed at `localhost:3030/metrics`. To visualize:\n\n1. Start Prometheus:\n\n```bash\nprometheus --config=prometheus.yml\n```\n\n2. Access metrics at `localhost:3030/metrics`\n\nGrafana should show something like this\n\n<img\nwidth=\"910\"\nalt=\"image\"\nsrc=\"https://github.com/piotrostr/listen/assets/63755291/95668158-9f7d-4cd2-be84-7c2b893d3f5c\">\n\n## Advanced Usage\n\n### Swap Profiling\n\nThe `stackcollapse.pl` can be installed through\n\n```sh\ngh repo clone brendangregg/FlameGraph && \\\n  sudo cp FlameGraph/stackcollapse.pl /usr/local/bin && \\\n  sudo cp FlameGraph/flamegraph.pl /usr/local/bin\n```\n\nProfile swap performance using DTrace to produce a flamegraph:\n\n```bash\n./hack/profile-swap.sh\n```\n\n<img width=\"1210\" alt=\"image\" src=\"https://github.com/piotrostr/listen/assets/63755291/699405b7-adf0-448b-89c1-ba71152dc72b\">\n\n","default_branch":"main","files":1021,"tree":[".dockerignore",".github/ISSUE_TEMPLATE/bug.yml",".github/ISSUE_TEMPLATE/proposals.yml",".github/workflows/rust.yml",".gitignore","LICENSE","README.md","ansible/ansible.cfg","ansible/setup_playbook.yml","approvals/.env.example","approvals/Cargo.lock","approvals/Cargo.toml","approvals/LICENSE","approvals/src/chain_id.rs","approvals/src/error.rs","approvals/src/lib.rs","blockhash-cache/.env.example","blockhash-cache/Cargo.lock","blockhash-cache/Cargo.toml","blockhash-cache/LICENSE","blockhash-cache/src/lib.rs","docker-compose.yml","example.png","lifi/Cargo.lock","lifi/Cargo.toml","lifi/LICENSE","lifi/src/chains.rs","lifi/src/client.rs","lifi/src/connections.rs","lifi/src/lib.rs","lifi/src/quote.rs","lifi/src/tokens.rs","lifi/src/tools.rs","listen-adapter/.dockerignore","listen-adapter/.gcloudignore","listen-adapter/.gitignore","listen-adapter/.rusfmt.toml","listen-adapter/Cargo.lock","listen-adapter/Cargo.toml","listen-adapter/Dockerfile","listen-adapter/bin/adapter.rs","listen-adapter/cloudbuild.yaml","listen-adapter/environment","listen-adapter/listen-adapter.service","listen-adapter/scripts/ci.sh","listen-adapter/scripts/copy-subscribe-msg.sh","listen-adapter/scripts/install-service.sh","listen-adapter/scripts/reinstall-service.sh","listen-adapter/scripts/send-test-webhook.sh","listen-adapter/src/config.rs","listen-adapter/src/db/candlesticks.rs","listen-adapter/src/db/mod.rs","listen-adapter/src/db/query.rs","listen-adapter/src/db/top_tokens.rs","listen-adapter/src/error.rs","listen-adapter/src/lib.rs","listen-adapter/src/redis_client.rs","listen-adapter/src/redis_subscriber.rs","listen-adapter/src/routes.rs","listen-adapter/src/state.rs","listen-adapter/src/version.rs","listen-adapter/src/webhook.rs","listen-adapter/src/websocket.rs","listen-analytics/.gitignore","listen-analytics/analyze.py","listen-analytics/analyze_logs.py","listen-analytics/cluster.py","listen-analytics/embed.py","listen-analytics/main.py","listen-analytics/preprocess.py","listen-analytics/test_test.py","listen-analytics/tx-stats/README.md","listen-analytics/tx-stats/bun.lockb","listen-analytics/tx-stats/evm.ts","listen-analytics/tx-stats/fetch_wallets.ts","listen-analytics/tx-stats/index.ts","listen-analytics/tx-stats/package.json","listen-analytics/tx-stats/solana.ts","listen-analytics/tx-stats/tsconfig.json","listen-analytics/tx-stats/types.ts","listen-data/.dockerignore","listen-data/.env.example","listen-data/.gcloudignore","listen-data/.gitignore","listen-data/.rustfmt.toml","listen-data/Cargo.lock","listen-data/Cargo.toml","listen-data/Dockerfile","listen-data/cloudbuild.yaml","listen-data/listen-indexer.service","listen-data/scripts/ci.sh","listen-data/scripts/install-service.sh","listen-data/scripts/purge-metadata.sh","listen-data/scripts/purge-prices.sh","listen-data/scripts/reinstall-service.sh","listen-data/scripts/run-docker.sh","listen-data/scripts/run.sh","listen-data/src/bin/indexer.rs","listen-data/src/bin/rpc_crawler.rs","listen-data/src/constants.rs","listen-data/src/db.rs","listen-data/src/debug.rs","listen-data/src/diffs.rs","listen-data/src/geyser/mod.rs","listen-data/src/handler/mod.rs","listen-data/src/handler/token_swap_handler.rs","listen-data/src/kv_store.rs","listen-data/src/lib.rs","listen-data/src/main.rs","listen-data/src/message_queue.rs","listen-data/src/metadata.rs","listen-data/src/metrics.rs","listen-data/src/price.rs","listen-data/src/process_swap.rs","listen-data/src/processor/meteora_dlmm_instruction_processor.rs","listen-data/src/processor/mod.rs","listen-data/src/processor/ocra_whirlpool_instruction_processor.rs","listen-data/src/processor/pump_amm_instruction_processor.rs","listen-data/src/processor/raydium_amm_v4_account_processor.rs","listen-data/src/processor/raydium_amm_v4_instruction_processor.rs","listen-data/src/processor/raydium_clmm_instruction_processor.rs","listen-data/src/processor/raydium_cpmm_instruction_processor.rs","listen-data/src/rpc/account_pipeline.rs","listen-data/src/rpc/instruction_pipeline.rs","listen-data/src/rpc/mod.rs","listen-data/src/sol_price_stream.rs","listen-data/src/util.rs","listen-engine/.dockerignore","listen-engine/Cargo.lock","listen-engine/Cargo.toml","listen-engine/Dockerfile","listen-engine/bin/engine.rs","listen-engine/examples/e2e.rs","listen-engine/examples/e2e_base.rs","listen-engine/fly.toml","listen-engine/grafana-queries.txt","listen-engine/listen-engine.service","listen-engine/prometheus.yml","listen-engine/scripts/install-service.sh","listen-engine/scripts/reinstall-service.sh","listen-engine/scripts/scale.sh","listen-engine/scripts/set-fly-secrets.sh","listen-engine/src/engine/api.rs","listen-engine/src/engine/bridge.rs","listen-engine/src/engine/collect.rs","listen-engine/src/engine/constants.rs","listen-engine/src/engine/email.rs","listen-engine/src/engine/error.rs","listen-engine/src/engine/evaluate.rs","listen-engine/src/engine/evaluator.rs","listen-engine/src/engine/execute.rs","listen-engine/src/engine/mod.rs","listen-engine/src/engine/notifications.rs","listen-engine/src/engine/order.rs","listen-engine/src/engine/pipeline.rs","listen-engine/src/engine/retry.rs","listen-engine/src/jup.rs","listen-engine/src/lib.rs","listen-engine/src/metrics.rs","listen-engine/src/redis/client.rs","listen-engine/src/redis/mod.rs","listen-engine/src/redis/rate_limits.rs","listen-engine/src/redis/subscriber.rs","listen-engine/src/server/cancel.rs","listen-engine/src/server/common.rs","listen-engine/src/server/create.rs","listen-engine/src/server/get.rs","listen-engine/src/server/internal.rs","listen-engine/src/server/mod.rs","listen-engine/src/server/state.rs","listen-engine/tests/engine_scalability.rs","listen-interface/.dockerignore","listen-interface/.env.example","listen-interface/.gitignore","listen-interface/Dockerfile","listen-interface/README.md","listen-interface/bun.lockb","listen-interface/eslint.config.js","listen-interface/index.html","listen-interface/package.json","listen-interface/postcss.config.js","listen-interface/public/hyperliquid-active.svg","listen-interface/public/hyperliquid-logo-active.svg","listen-interface/public/hyperliquid-logo-white.svg","listen-interface/public/hyperliquid-white.svg","listen-interface/public/listen-galaxy.png","listen-interface/public/listen-icon.png","listen-interface/public/listen-new.svg","listen-interface/public/scichart2d.data","listen-interface/public/scichart2d.js","listen-interface/public/scichart2d.wasm","listen-interface/public/usdc-logo.svg","listen-interface/src/assets/add-to-home-screen-guide.png","listen-interface/src/assets/add-to-home-screen.png","listen-interface/src/assets/icons/bsc.svg","listen-interface/src/assets/icons/claude.png","listen-interface/src/assets/icons/deepseek.png","listen-interface/src/assets/icons/dexscreener.png","listen-interface/src/assets/icons/ethereum.png","listen-interface/src/assets/icons/ethereum.svg","listen-interface/src/assets/icons/gemini.webp","listen-interface/src/assets/icons/infinity.svg","listen-interface/src/assets/icons/openai.png","listen-interface/src/assets/icons/pump.png","listen-interface/src/assets/listen-loading.gif","listen-interface/src/assets/react.svg","listen-interface/src/components/AddToHomeScreenGuide.tsx","listen-interface/src/components/AddToHomeScreenIcon.tsx","listen-interface/src/components/AddToHomeScreenPopup.tsx","listen-interface/src/components/Background.tsx","listen-interface/src/components/Balances.tsx","listen-interface/src/components/BetaWarning.tsx","listen-interface/src/components/BubbleMapDisplay.tsx","listen-interface/src/components/Burger.tsx","listen-interface/src/components/BuySellModal.tsx","listen-interface/src/components/ChainIcon.tsx","listen-interface/src/components/Chart.tsx","listen-interface/src/components/Chat.tsx","listen-interface/src/components/ChatContainer.tsx","listen-interface/src/components/ChatHistory.tsx","listen-interface/src/components/ChatInput.tsx","listen-interface/src/components/ChatMessage.tsx","listen-interface/src/components/ChatSelector.tsx","listen-interface/src/components/CloseButton.tsx","listen-interface/src/components/ConnectedAccount.tsx","listen-interface/src/components/ConnectedAccounts.tsx","listen-interface/src/components/CopyIcon.tsx","listen-interface/src/components/DelegateActionButton.tsx","listen-interface/src/components/DepositUsdcDisplay.tsx","listen-interface/src/components/DexscreenerDisplay.tsx","listen-interface/src/components/DropdownMessage.tsx","listen-interface/src/components/EditableMessage.tsx","listen-interface/src/components/EoaEvmWalletSelector.tsx","listen-interface/src/components/Erc20Balance.tsx","listen-interface/src/components/EvmRawTokenMetadataDisplay.tsx","listen-interface/src/components/EvmWalletCreation.tsx","listen-interface/src/components/ExtendedPipelineDisplay.tsx","listen-interface/src/components/FetchXPostDisplay.tsx","listen-interface/src/components/FloatingPanel.tsx","listen-interface/src/components/FullPageLoading.tsx","listen-interface/src/components/FundWallet.tsx","listen-interface/src/components/GeckoTerminalChart.tsx","listen-interface/src/components/GetBalanceOverviewDisplay.tsx","listen-interface/src/components/GetCandlesticksRawDisplay.tsx","listen-interface/src/components/GetLatestPriceDisplay.tsx","listen-interface/src/components/GettingStarted.tsx","listen-interface/src/components/GradientOutlineButton.tsx","listen-interface/src/components/GradientOutlineButtonMoreRounded.tsx","listen-interface/src/components/JupiterQuoteDisplay.tsx","listen-interface/src/components/LanguageSwitcher.tsx","listen-interface/src/components/Layout.tsx","listen-interface/src/components/ListenThreeDots.tsx","listen-interface/src/components/MarketOpenDisplay.tsx","listen-interface/src/components/MessageRenderer.tsx","listen-interface/src/components/MobileNavigation.tsx","listen-interface/src/components/ModalContainer.tsx","listen-interface/src/components/ModelSelector.tsx","listen-interface/src/components/NestedAgentOutputDisplay.tsx","listen-interface/src/components/NewChatCarousel.tsx","listen-interface/src/components/NewChatTiles.tsx","listen-interface/src/components/NotificationPipelineStep.tsx","listen-interface/src/components/OldGettingStarted.tsx","listen-interface/src/components/OrderbookChart.tsx","listen-interface/src/components/OrderbookDisplay.tsx","listen-interface/src/components/OutlineButton.tsx","listen-interface/src/components/PanelSelector.tsx","listen-interface/src/components/ParToolResultMessage.tsx","listen-interface/src/components/Pipeline.tsx","listen-interface/src/components/PipelineMenu.tsx","listen-interface/src/components/PipelineStepContainer.tsx","listen-interface/src/components/Pipelines.tsx","listen-interface/src/components/PipelinesInitializer.tsx","listen-interface/src/components/Portfolio.tsx","listen-interface/src/components/PortfolioItemTile.tsx","listen-interface/src/components/PortfolioSkeleton.tsx","listen-interface/src/components/PortfolioSummary.tsx","listen-interface/src/components/PortfolioZeroState.tsx","listen-interface/src/components/PriceUpdates.tsx","listen-interface/src/components/PriceUpdatesHeader.tsx","listen-interface/src/components/QuoteDisplay.tsx","listen-interface/src/components/RawTokenMetadataDisplay.tsx","listen-interface/src/components/RecentChats.tsx","listen-interface/src/components/Rectangle.tsx","listen-interface/src/components/ResearchOutput.tsx","listen-interface/src/components/RiskDisplay.tsx","listen-interface/src/components/Settings.tsx","listen-interface/src/components/ShareModal.tsx","listen-interface/src/components/SimpleHeader.tsx","listen-interface/src/components/Socials.tsx","listen-interface/src/components/SolanaWalletCreation.tsx","listen-interface/src/components/Spinner.tsx","listen-interface/src/components/SuggestionTiles.tsx","listen-interface/src/components/SwapPipelineStep.tsx","listen-interface/src/components/SwapToken.tsx","listen-interface/src/components/SwipeHandler.tsx","listen-interface/src/components/ThinkingIndicator.tsx","listen-interface/src/components/ThoughtsDisplay.tsx","listen-interface/src/components/TileButton.tsx","listen-interface/src/components/Toast.tsx","listen-interface/src/components/TokenBalanceDisplay.tsx","listen-interface/src/components/TokenDisplay.tsx","listen-interface/src/components/TokenTile.tsx","listen-interface/src/components/ToolCallMessage.tsx","listen-interface/src/components/ToolMessage.tsx","listen-interface/src/components/TopTokensDisplay.tsx","listen-interface/src/components/TopicDisplay.tsx","listen-interface/src/components/VectorArrow.tsx","listen-interface/src/components/VersionAndLanguage.tsx","listen-interface/src/components/VersionInitializer.tsx","listen-interface/src/components/WalletAddresses.tsx","listen-interface/src/components/WalletInitializer.tsx","listen-interface/src/components/WalletSwitcher.tsx","listen-interface/src/components/WebsocketInitializer.tsx","listen-interface/src/config.ts","listen-interface/src/contexts/ChatContext.tsx","listen-interface/src/contexts/KeyboardContext.tsx","listen-interface/src/contexts/MobileContext.tsx","listen-interface/src/contexts/ModalContext.tsx","listen-interface/src/contexts/PanelContext.tsx","listen-interface/src/contexts/SidebarContext.tsx","listen-interface/src/contexts/ToastContext.tsx","listen-interface/src/contexts/WorldContext.tsx","listen-interface/src/contexts/chunk-reader.ts","listen-interface/src/hooks/useCancelPipeline.ts","listen-interface/src/hooks/useDebounce.ts","listen-interface/src/hooks/useEnrichedToken.ts","listen-interface/src/hooks/useEoaExecution.ts","listen-interface/src/hooks/useEvmPortfolio.ts","listen-interface/src/hooks/useHasAddedToHomeScreen.ts","listen-interface/src/hooks/useHyperliquidMids.ts","listen-interface/src/hooks/useHyperliquidPortfolio.ts","listen-interface/src/hooks/useInvalidatePortfolio.ts","listen-interface/src/hooks/useIsAuthenticated.ts","listen-interface/src/hooks/useListenBalance.ts","listen-interface/src/hooks/usePWAStatus.ts","listen-interface/src/hooks/usePipelineExecution.ts","listen-interface/src/hooks/usePipelines.ts","listen-interface/src/hooks/usePortfolioInvalidation.ts","listen-interface/src/hooks/usePrivyWallet.ts","listen-interface/src/hooks/useSolBalance.ts","listen-interface/src/hooks/useSolanaPortfolio.ts","listen-interface/src/hooks/useSolanaPrice.ts","listen-interface/src/hooks/useSuggestions.ts","listen-interface/src/hooks/useToken.ts","listen-interface/src/hooks/useWaitForTransaction.ts","listen-interface/src/hooks/useWalletIds.ts","listen-interface/src/hooks/useWorldLogin.ts","listen-interface/src/i18n/add-to-home-screen.ts","listen-interface/src/i18n/index.ts","listen-interface/src/i18n/translations/bubble-map.ts","listen-interface/src/i18n/translations/buy-sell-modal.ts","listen-interface/src/i18n/translations/chat-history.ts","listen-interface/src/i18n/translations/chat.ts","listen-interface/src/i18n/translations/dexscreener-display.ts","listen-interface/src/i18n/translations/getting-started.ts","listen-interface/src/i18n/translations/layout.ts","listen-interface/src/i18n/translations/pipeline-execution.ts","listen-interface/src/i18n/translations/pipelines.ts","listen-interface/src/i18n/translations/portfolio.ts","listen-interface/src/i18n/translations/price-updates.ts","listen-interface/src/i18n/translations/recent-chats.ts","listen-interface/src/i18n/translations/recommended-questions.ts","listen-interface/src/i18n/translations/settings.ts","listen-interface/src/i18n/translations/share-modal.ts","listen-interface/src/i18n/translations/token-tile.ts","listen-interface/src/i18n/translations/tool-calls.ts","listen-interface/src/i18n/translations/tool-messages.ts","listen-interface/src/i18n/translations/topic-display.ts","listen-interface/src/i18n/translations/version.ts","listen-interface/src/i18n/translations/wallet-addresses.ts","listen-interface/src/index.css","listen-interface/src/lib/approvals.ts","listen-interface/src/lib/balance-change.spec.ts","listen-interface/src/lib/balance-change.ts","listen-interface/src/lib/cache.ts","listen-interface/src/lib/denylistCache.ts","listen-interface/src/lib/eoa-tx.ts","listen-interface/src/lib/evmPortfolio.ts","listen-interface/src/lib/hype-types.ts","listen-interface/src/lib/hype.spec.ts","listen-interface/src/lib/hype.ts","listen-interface/src/lib/indexedDB.ts","listen-interface/src/lib/localStorage.ts","listen-interface/src/lib/portfolioHelpers.ts","listen-interface/src/lib/price.ts","listen-interface/src/lib/rateLimiter.ts","listen-interface/src/lib/schema.ts","listen-interface/src/lib/solanaPortfolio.ts","listen-interface/src/lib/types.ts","listen-interface/src/lib/util.spec.ts","listen-interface/src/lib/util.ts","listen-interface/src/main.tsx","listen-interface/src/parse-agent-output.ts","listen-interface/src/process-tags.tsx","listen-interface/src/prompts/common.ts","listen-interface/src/prompts/index.ts","listen-interface/src/prompts/pipelines.ts","listen-interface/src/prompts/system.ts","listen-interface/src/routeTree.gen.ts","listen-interface/src/routes/__root.tsx"],"storefront":"/r/piotrostr","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/piotrostr/listen/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}