TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Beforehand: a personal AI that knows before you ask.
Beforehand flags browsing patterns that may deserve a follow-up, proposes one, and runs it only if your rules allow it. A pattern can be a search you never followed up, a setup page you visited once, a project that went quiet or a Korean product you viewed on two different days. For that last case the follow-up is a Korea price quote, and the agent always stops at the quote.
Built for the Nebius × NVIDIA Global AI Hackathon (Personal AI track).
Beforehand has three parts. This repository holds the first two.README 전문 보기 ↗Beforehand: a personal AI that knows before you ask.
Beforehand flags browsing patterns that may deserve a follow-up, proposes one, and runs it only if your rules allow it. A pattern can be a search you never followed up, a setup page you visited once, a project that went quiet or a Korean product you viewed on two different days. For that last case the follow-up is a Korea price quote, and the agent always stops at the quote.
Built for the Nebius × NVIDIA Global AI Hackathon (Personal AI track).
Beforehand has three parts. This repository holds the first two.
| Part | What it does | In this repo |
|---|---|---|
Browsing agent (browsing/) | Detects signals in browsing history, triages each one with NVIDIA Nemotron on Nebius Token Factory, checks the proposed action against your rules in code (allow, hold or block), then writes a research brief, a setup suggestion or a Korea quote, and records everything in a local JSONL trace | Yes, Apache-2.0 |
Chrome extension (extension/) | Shows the Korea delivered price, or Korean alternatives, for the product you are viewing on 22 supported shops | Yes, Apache-2.0 |
| Korea Concierge | The quote service both parts call over HTTPS. It is also published as a connector for Claude and ChatGPT | No. A separate service run by the developer of Beforehand |
The agent starts from what you already did, not from a new prompt. Five rule-based detectors look for signals: new_entry (a first visit to a setup or signup page), unresolved (a search with no follow-through visit), recurring (repeat visits to one website), dropped (activity that went quiet) and korea_product (a Korean product viewed more than once). A visit is a signal, not proof of intent or of unfinished setup.
The demo runs on a fictional browsing history: a hobby maker learning Python and planning a small creative project, Sep 1 to Oct 1, 2026 (UTC). No real account is touched by the demo or by its saved run.
CACHED · live · complete. The Saved-run comparison · same 9 signals table counts each outcome per profile: Allowed ✓, Held ◐, Blocked ✕ and Skipped by model ○. Failed actions are counted separately.You need Chrome 116 or later and Node.js.
cd extension
npm test
node scripts/build.mjs store
chrome://extensions and turn on Developer mode.extension/dist/store.The extension needs no AI account or API key. It can also start a purchase through Korea Concierge (card or PayPal); that path is optional and described in extension/PRIVACY.md. The browsing agent never buys anything.
flowchart LR
subgraph Device["Your device or self-hosted container"]
H[(Browsing history DB<br/>synthetic in the demo)] --> S[signals.py<br/>5 rule-based detectors]
S --> T[Triage<br/>Nemotron Ultra]
T -->|Proceed| M{Your rules<br/>allow / hold / block}
T -->|Skip| X[Not run]
M -->|allow| A[Act: brief, suggestion or quote<br/>Nemotron Nano]
M -->|hold or block| R[Recorded, not run]
A --> TR[(Local JSONL trace)]
R --> TR
end
T -. HTTPS .-> NTF[Nebius Token Factory]
A -. HTTPS .-> NTF
A -. allowed research .-> TAV[Tavily Search]
A -. product name, destination .-> KC[Korea Concierge<br/>separate service]
EXT[Chrome extension] -. product name, brand, country .-> KC
CL[Claude and ChatGPT connectors] -. MCP .-> KC
The agent is a LangGraph loop (triage → mandate → act) in browsing/agent.py. Your rules are checked in code, not by the model: browsing/mandate.py evaluates each planned action deterministically and fails closed. An invalid rule file blocks everything, and commerce.checkout is always blocked. The three demo profiles are browsing/mandate.toml and the files in browsing/web/profiles/.
All provider calls live in browsing/providers.py, the replaceable provider layer.
https://api.tokenfactory.nebius.com/v1/chat/completions. At runtime the code lists https://api.tokenfactory.nebius.com/v1/models and picks the shortest model id that contains both nemotron and the requested tier (nano, super, lightning or ultra). Auth is NEBIUS_API_KEY.browsing/agent.py):
TRIAGE_TIER = "ultra") with an evidence rubric per signal kind and an 8,192-token ceiling for reasoning plus output. That ceiling is a provisional cap, not measured usage.browsing/persona (URLs, titles, times and search terms).https://api.tavily.com/search, TAVILY_API_KEY) is the default search provider. It is called for an unresolved search only when triage says Proceed and your rules allow research. Skipped, held and blocked signals never reach Tavily.The hosted demo runs as a CPU container on Nebius AI Cloud Serverless.
All code in this repository was written during the submission period; the first browsing/ commit is dated 2026-09-13. Beforehand is a new project. For Korea prices it calls Korea Concierge, a separate quote service that existed before the submission period and is not part of this repository.
eval-live command, and token limits raised to match measured Nemotron reasoning use. Korea quote skill (quote only) and the commerce.quote action kind. First Chrome MV3 extension.browsing/ agent, detectors, rules, providers, persona generator, tests
browsing/web/ demo web app (Starlette, templates, rule profiles)
browsing/demo-assets/ saved run used by the demo page
extension/ Chrome MV3 extension (plain JavaScript modules, tests, privacy policy)
Dockerfile demo web image
Dockerfile.job one-shot persona generation job
Use Python 3.12.
python -m pip install -r browsing/web/requirements.txt
DEMO_STATE_DIR=.demo-state python -m uvicorn browsing.web.app:create_app \
--factory --host 127.0.0.1 --port 8080 --workers 1
Open http://127.0.0.1:8080/. No provider calls happen on startup, page views, profile selection or GET /healthz.
The repository ships one synthetic DB, browsing/demo-assets/korea-maker-20261003-010959.db, so the demo and tests run from a clone. It is a fictional persona's generated history, with no real person, account or browser profile; see browsing/demo-assets/README.md. To generate a new one:
python -m browsing.persona generate \
--scenario browsing/persona/scenarios/maker.toml \
--out browsing/demo-assets/maker-YYYYMMDD-HHMMSS.db --attempts 3
Or build the one-shot job image:
docker build -f Dockerfile.job -t beforehand-persona-job .
# Run with NEBIUS_API_KEY at runtime and an output volume at /output writable by UID 10001.
# Default arguments: --scenario browsing/persona/scenarios/maker.toml --out /output/browsing.db
The generator feeds the existing ingest schema, runs the detectors and requires every planted signal to be found. It retries up to the --attempts bound and writes a DB plus an adjacent .json manifest. Review the generated text before you publish it.
docker build -f Dockerfile \
--build-arg SYNTHETIC_DB=browsing/demo-assets/maker-YYYYMMDD-HHMMSS.db \
-t beforehand-demo .
docker volume create beforehand-demo-state
docker run --rm -p 8080:8080 \
-e NEBIUS_API_KEY -e TAVILY_API_KEY -e DEMO_DAILY_LIMIT=20 \
-v beforehand-demo-state:/state beforehand-demo
The image listens on port 8080, runs as UID 10001 and checks /healthz. No LLM runs during the image build, and no key is a build argument.
| Variable | Purpose |
|---|---|
NEBIUS_API_KEY | Nebius Token Factory (Nemotron) |
TAVILY_API_KEY | Tavily search |
SERPER_API_KEY | Optional alternative search provider |
DEMO_DB | Synthetic DB path (the image sets /app/synthetic/browsing.db) |
DEMO_STATE_DIR | Writable state for the daily budget, saved results and traces (default .demo-state; the image uses /state) |
DEMO_DAILY_LIMIT | Live runs per UTC day, default 20; 0 disables live runs |
DEMO_CACHE | Optional exported cache of successful runs, so the walkthrough renders during provider outages |
Run one replica with persistent state. Independent replicas would split the daily budget. See browsing/README.md for cache export, live evaluation and the full set of limits.
python -m pytest browsing -q -p no:cacheprovider
cd extension && npm test
Tests use fake providers and fixtures. They do not call live APIs.
extension/PRIVACY.md.Apache-2.0. See LICENSE and NOTICE.
Korea Concierge, the quote service these components call over HTTPS, is a separate service and is not part of this repository.