factcircuit
FactCircuit는 불변 출처와 단계별 검증, 제한된 검색, 재현 가능한 평가를 제공하는 감사 가능한 주장·증거 검증 루프입니다
소셜 미디어 게시물을 연구 질문으로 바꾸고 조사 과정을 추적하는 로컬 브라우저 도우미
A local browser companion that turns social media posts into research questions and tracks investigation trails
AI가 요약 · README에서
데이터Python · JavaScriptGitHub @h100envy직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
🕷️ Meet the curious side of your feed. Your next research rabbit hole has eight legs. A browser companion that turns the posts you see into questions worth asking. What's new · Get started · Русский · Architecture · PrivacyREADME 전문 보기 ↗
| 🟢 Robinhood Chain launches | The launchpad now speaks two chains: Solana via pump.fun and Robinhood Chain via pons, from one form. The first Robinhood launch went through clean |
| 🕸️ Narrative Hunter | Grok walks X every few hours for narratives that started moving: new memes, viral animals, AI drops. Each comes with its source posts (checked to exist), a name and ticker, and how many pump.fun coins already took that ticker today. One click fills the launch form. /narratives in the bot |
| ⚡ No paid RPC | The server now reads Solana through its own pool of free public nodes, with rate budgets and failover, instead of a paid Helius plan |
| 🕷️ Spider's chain pick | The launch page tells you where to launch right now, from the last 24h of launches and graduations on both chains, plus the mood on X |
| 🔥 Burn | gemsearch.fun/burn: burn $GEMSEARCH from your wallet in one click, with a live counter of every burn |
| 🏆 Launch Cup | gemsearch.fun/cup: $50 / $20 / $10 every week for the most successful coins launched on gemsearch.fun. /cup in the bot |
| 🌈 Crawling spiders | Rainbow spiders walk across every page of the site, frame a block and spin threads to it |
| Chain | Solana (Token-2022), launched on pump.fun, graduated to PumpSwap |
| Contract | GQCGitfVw5LYnj4L4zrNUMYeK9dNxEJi9ZjMwMfQpump |
| Buy | pump.fun · DexScreener |
| Burned | Live on gemsearch.fun/burn: every burn is on chain with its transaction (about 5% of the supply so far) |
| Buyback | 2 SOL of $GEMSEARCH bought back from creator fees (transaction) |
Every tool below is free and does not require holding the token. Burning reduces supply; it is not a promise of price. Nothing here is financial advice.
Everything below is free, needs no wallet connection and runs on the open-source server in launchpad/.
| Tool | What it does |
|---|---|
| Scanner | Paste any Solana contract address: mint and freeze authority, top 10 holders, the dev's share and earlier pump.fun launches, liquidity or curve progress, Dex profile, ticker clones. A score out of 100 with every reason; red flags first, and anything it could not read is unknown, never safe. Shareable card |
| Web X-ray | Under every scan: a web of who really holds the coin. Wallets that bought in the launch block with the dev, wallets funded from one source, coins passed between holders. Verdict BUNDLE / LINKED WALLETS / NO LINKED WALLETS; every link opens its transaction |
| Bundle Crew | The spider's memory across launches. Every pump.fun launch with buys in its launch block is recorded with who bought, who funded them and what the coin did an hour and a day later. When the same funders show up in a new coin, the scan shows that crew's earlier launches and how they ended. Memory started on October 7, 2026 |
| Grok Council | Under every scan: four Grok seats debate the coin. The Lookout searches X live; the Skeptic, the Builder and Timing argue from the spider's on-chain facts; all four vote APE / WATCH / AVOID, and you can ask the council follow-up questions. X claims are treated as opinions and checked against the data. Also /council <CA> in the bot |
| Clean Launch Feed | /feed on in the bot: every pump.fun launch is checked about 30 seconds after mint, and the ones that pass your filters land in the chat: buys in the launch block, dev buy size, links, how many coins the dev launched in 24 hours, crew memory. Tune with /feed set dev=3 block=0 links=2. Clean is not the same as good: it removes the obvious traps |
| Council record | Every council verdict is stored with the coin's market cap and checked 24 hours later: AVOID right if it fell 30%+, APE if it rose 30%+, WATCH if it moved less. Public accuracy by verdict and by seat, best and worst calls, nothing hand-picked |
| Council sentinel | In the bot, when an account you /track drops a contract address, the council convenes by itself and posts the Skeptic's take and the verdict under the post (a few times a day per chat). In groups, reply to a message with an address with , or |
A crew, a cluster or a bundle is a funding pattern on chain, not a proven identity. A high score means a clean launch, not that a coin will go up.
The spider finds the narrative. Now you can launch on it without leaving the site: gemsearch.fun/launch creates a coin on Solana via pump.fun or on Robinhood Chain via pons, from the wallet in your browser. Not sure which? The spider's chain pick at the top of the page compares both chains right now. Coins launched here also enter the weekly Launch Cup.
| Everything pump.fun asks for | Image, name, ticker, description, website, X and Telegram |
| Dev buy | Your first buy in the same transaction, up to 5 SOL, before snipers get the cheapest part of the curve |
| Creator fees to a GitHub dev | Send 1 to 100% of creator fees to any GitHub account, the rest stays yours. The split is pump.fun's own fee sharing, set inside the launch transaction; the developer claims in the pump.fun app by signing in with GitHub |
| Pay Dex | After launch, one button opens DexScreener's own profile order with your coin filled in; you pay DexScreener directly, Gem Search never handles that payment. The page also shows whether any coin's Dex profile is paid |
| Robinhood Chain via pons | Switch the network to launch on pons V2 from an EVM wallet (Rabby, MetaMask): the same form, a creator tax of 0–5% paid to your wallet, an ETH dev buy quoted by simulation. The logo is pinned to IPFS and the transaction is built from pons' verified contracts; your wallet sends it |
| GitHub repo and source post | Link the repo behind a coin and the X post it was made about. Neither launchpad has fields for them, so they go in the X and website fields when free, otherwise at the end of the description, and show as badges in our list |
| 0% to Gem Search | No platform fee, no cut of creator fees |
How it stays safe. The coin's mint key is made in your browser and never leaves it. The launch server stores the image and metadata on IPFS, builds the pump.fun transaction with you as payer and owner, and sends it only if what your wallet signed is byte for byte what it built. It holds no key of yours and keeps no accounts. The server is open source in launchpad/ on the launchpad branch, with tests and a mainnet simulation that spends nothing.
Coins follow pump.fun's and pons' rules and fees. Gem Search does not review, endorse or list what anyone launches.
A narrative is most interesting before it has a name. Until now the spider sorted everything into five fixed topics. Now it also notices the small, specific things that show up first, and tells you how fast they are moving.
In Discovery: filter by signal type, sort by Fastest growing, Newest first or Most authors, and open the velocity panel on any lead.
python3 app.py # terminal 1: the local engine
python3 scripts/spider_demo.py # terminal 2: stream fictional sample posts with live logs
The walkthrough sends each post through the extension API and prints what the real engine reports back: captures, engine events, every lead with its growth and four checks. Use scripts/sample_signals.py instead for a silent load, or --speed 2 for a faster run.
$WEBZ and “rainbow spiders” jump to the top at ×9.The sample posts, handles, $WEBZ and the address are invented and marked (sample). On a real feed the same leads appear from what the spider sees in your tabs.
Copy topics.example.json to topics.json, edit the patterns (up to 40 topics, case-insensitive regular expressions) and restart. A broken file is ignored with a warning and the built-in topics stay active. topics.json stays on your machine.
SPIDER_ALLOW_LAUNCH=1. They belong to other people.Gem Search puts an animated eight-legged research companion on your X feed. It walks between visible posts, highlights what it is inspecting, and sends a small capture to a research engine running on your computer.
JEV groups recurring topics and project links. Crawler reads public sites, repositories and docs. Four Grok seats challenge the evidence from different perspectives. Your dashboard keeps the sources, gaps and decisions together.
The spider is a browser overlay, not an operating-system desktop pet. It cannot walk outside the page or monitor another application. It doesn't like, reply, follow accounts or connect a wallet.
This is an open-source developer preview, not a promise of early alpha. A shortlist is a research lead, not proof of safety, originality or future returns.
| Layer | Behavior |
|---|---|
| 🕷 Spider | Animated overlay, current-post highlight, capture counters, pause/dismiss, optional visible-tab auto-scroll |
| JEV | Local post deduplication, topic grouping, cashtags, Solana addresses, emerging phrases, 6h growth, author diversity and repeated-text checks; editable English/Russian topics |
| Crawler | Follows bounded public HTTP(S) links; caches pages for 30 minutes; blocks private-network targets |
| Grok seats | Four actual API requests with role-specific prompts, structured output and evidence references; optional |
| Dashboard | Filterable projects/narratives, local checks, Grok reasons, sources, persistent activity log and JSON export |
| Local queue | Survives extension worker suspension and backend restarts; bounded to avoid unlimited collection |
| Economy mode | No paid X API required to inspect the posts already visible in your browser; local rules work without Grok |
JEV is our own signal detector, not an integration with an unnamed external JEV product. Grok uses the official xAI API; this repository is not an official X/xAI extension. Reading the current DOM is not an X firehose or a substitute for a licensed data service.
Open a project in Discovery, click Discovery capsule, choose Aurora or Daylight, and download a standalone SVG card. It captures mentions, observed authors, local check results, Grok status, up to three source addresses and a UTC timestamp. A rainbow spider signs the design.
/spider-demo to meet the spider on fictional posts.python3 app.py --autopilot for the Hacker News scanner and inbox watcher.Python 3.11+, Chrome/Chromium. Backend: macOS, Linux, or Windows through WSL2. Node 22+ is needed only for the full test suite and optional Solana module; the research backend and extension need no npm build.
git clone https://github.com/h100envy/gem-search.git
cd gem-search
cp .env.example .env
python3 app.py
The local engine must stay running. If it is offline, up to 200 captured posts remain in the extension queue. The next successful connection forwards them. Background tabs do not collect or auto-scroll.
Try the spider without an X account: open http://127.0.0.1:8787/spider-demo. It uses the same spider renderer over fictional cards, makes no API calls and collects nothing. The dashboard's Demo scan separately exercises the research pipeline with clearly marked synthetic projects.
Add your key locally to .env, then restart the engine:
GROK_ENABLED=1
XAI_API_KEY=your_local_api_key
GROK_MODEL=grok-4.7
GROK_DAILY_CALLS=12
| Seat | Question |
|---|---|
| Lookout | Is there a noteworthy signal in the observed sample? |
| Maker | What product or technical evidence is actually present? |
| Skeptic | What is contradictory, risky or still unverified? |
| Runner | Is there enough evidence to investigate this now? |
Reviews begin only after at least four distinct observed authors. One full review makes four requests, so the default limit permits at most three full reviews per rolling 24 hours, including failed calls. Results are cached for 24 hours for identical evidence/model inputs. Each request has bounded excerpts and a 700-token output limit. This is a request allowance, not a guaranteed dollar cap; your xAI plan determines charges. No xAI search tools are enabled.
Keys stay in the backend. Collected excerpts leave your computer only when Grok is enabled, sent to api.x.ai for analysis. Without a key, the UI shows local checks instead. An unavailable model, exhausted allowance, invalid response or invented citation cannot count as a pass. Model outputs cannot execute code, browse independently or control wallets.
The Grok adapter is implemented and covered by mocked tests. A real paid Grok call has not been validated in this checkout because no xAI key was provided.
These illustrations explain the workflow; they are not screenshots or measured results.
Your computer, internet connection and any enabled paid services still have their own costs. Request limits do not guarantee a fixed API bill.
flowchart LR
X[Visible X posts] --> S[Spider overlay]
S --> Q[Extension queue]
Q --> L[Paired localhost API]
L --> J[JEV signal detector]
J --> C[Cached crawler]
C --> R[Local evidence checks]
R --> G[Optional Grok seats]
G --> D[Dashboard and shortlist]
R --> D
A browser token can only submit captures and read scanner status. It cannot launch tokens. The extension has no account-action code and no xAI API key. See architecture and privacy.
Select LAUNCH_PROVIDER=pumpportal or bridge in .env. An arbitrary platform website URL does not work: it needs a compatible adapter. External bridges manage their own signing and must enforce the requested 0.025 SOL cap; their results are reported, not independently verified by Gem Search. Other chains are not supported by the current SOL budget policy.
Connection guide and API contract →
data/inbox/ support external collectors. See data format.python3 app.py --autopilot also enables the free Hacker News narrative scanner and inbox watcher. HN attention is labeled separately from X captures.ENABLE_PAID_X=0 by default.SPIDER_ALLOW_LAUNCH=1.npm ci --ignore-scripts
python3 -m unittest discover -s tests -v
npm test
python3 scripts/package_extension.py
The ZIP is written to dist/gem-search-extension.zip; it contains extension assets only. Extract it and load that directory as an unpacked extension. GitHub Actions also uploads the ZIP as a build artifact. This is not a Chrome Web Store listing.
Tests cover capture validation, route exclusions, deduplication, narratives, Grok caching/allowances/failures, local-network blocking, queue recovery, and optional transaction guards. They do not establish that every future X layout will work. Full browser installation and real-account capture still need manual QA against the current X markup. See contributing.
extension/ Manifest V3 popup, worker, extractor and animated spider
jev.py Local topics, tickers, addresses, emerging phrases, growth
topics.example.json Template for your own local topic list
grok.py Four optional API reviewers + persistent request allowance
app.py Local HTTP engine, crawler, dashboard and capture worker
static/ Research dashboard
docs/ Architecture, privacy, preview and launch documentation
scripts/ Icon generation, ZIP packaging, sample signals and terminal walkthrough
automation.py Optional durable launch queue
launch/ Optional isolated-wallet Solana executor
launchpad/ gemsearch.fun server (launchpad branch): pump.fun and pons launches, scanner, X-ray,
council, bundle index, burn, Launch Cup, chain advisor and the Telegram bot
tests/ Offline tests and unsigned provider fixture
X markup changes. The extractor uses rendered article[data-testid="tweet"], text, timestamp permalinks and visible external anchors. Shortened t.co links aren't treated as verified project sites. Topic discovery uses a small, inspectable taxonomy that you can replace with topics.json. Emerging-phrase detection catches repeated wording, not meaning: it can miss memes spelled differently, sarcasm and novel projects, and three coordinated accounts can fake a phrase. A cashtag or address is a lead, not a verified token. A linked repository isn't proof of a functioning product. No model here detects every scam or bot ring.
The engine is local and single-user. Do not expose its port to the internet. Keys, wallet files, captured posts and SQLite are ignored by Git. Read SECURITY.md before changing trust boundaries.
MIT · Independent project. Not affiliated with X, xAI, Pump.fun, PumpPortal, pons, Robinhood or DexScreener.
@gemsearchfunbot councilroastxray| The Roaster | Grok in fun mode roasts a coin from its on-chain facts (🔥 Roast it under the scan, /roast <CA> in the bot) or your whole bag on gemsearch.fun/me. Jokes about the numbers, never about people |
| Am I exit liquidity? | Paste your own wallet: every memecoin in it is scanned and the largest positions X-rayed. One verdict weighted by position size, with a shareable card. Public balances only |
| Bundle Index | Live: every new pump.fun launch, 30 seconds after mint, checked for other buys in its launch block. 3+ = bundled, 1–2 = sniped, 0 = clean. Live feed, share of the day, biggest launch blocks, hourly chart, dev-buy sizes |
| Narrative Hunter | On the launch page and as /narratives in the bot: every few hours Grok searches X for narratives that started moving in the last hours (memes, viral animals, AI and tech moments). Every source post is checked to exist with X's public oEmbed; each narrative shows heat (early / rising / hot), a suggested name and ticker, and how many pump.fun coins already launched with that ticker today. "Launch on this" fills the form with the name, ticker, description and source post. Skips tragedies, politics, hate, adult content and impersonation |
| Spider's chain pick | On the launch page: which chain to launch on right now, Solana (pump.fun) or Robinhood Chain (pons). Compares the last 24h of launches (the crowd you compete with) and the share that reached a DEX (pons factory events on chain; a DexScreener sample for pump.fun). The pick follows the numbers; Grok adds the mood on X for each chain. One click switches the form |
| Burn | Burn $GEMSEARCH from your own wallet in one click: a Token-2022 BurnChecked built in the browser, signed by you. Live total burned, % of supply, every burn with its transaction, and the countdown to the next scheduled burn |
| Launch Cup | Every week the three most successful coins launched through gemsearch.fun win $50, $20 and $10: ranked by market cap at the end of the week, one coin per creator, bundled launches out. Live table |
| Telegram bot | @gemsearchfunbot: send a contract address for the scan card, /xray for the web with its crew line, /watch for before → after alerts when the dev sells, liquidity drains or the coin graduates, /track @account to follow up to 5 X accounts: their new posts land in the chat, with a scan button when they drop a contract address. Also /council, /roast, /feed, /cup and /launch. Works in groups |