DeepSeek Harness Remote
DeepSeek Harness Remote: DeepSeek Harness 실행 PC와 모바일·PC를 안전하게 연결해 어디서나 작업 이어받기
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Mumble at your phone all day. Open models sort it out overnight.
Live: https://mumble-azure.vercel.app
Record rambling voice memos whenever something pops into your head. At 3 AM, a free GitHub Actions runner wakes up, transcribes them with Whisper, and has Gemma turn them into to-dos, calendar events and notes. In the morning you open one screen and tap Done, Keep, Add to calendar or Dismiss (each with Undo). Until then you can play a memo back to check it saved; kept notes and search live in Remember.
It costs nothing to run.
A demo week of everyday memos (voiced with macOS say): 9 memos, 70 seconds of
talking, 220 words. The nap turned them into 16 to-dos, events and notes, and
Morning opened with:
10 min saved. Last night: 9 memos, 1 min of mumbling instead of 11 min of typing and sorting.
Mumble counts typing at 40 words a minute, plus about 20 seconds to file each item into the right list with the right date.
On Sundays, Ultramarine reads the whole week. In the demo week it noticed "call the dentist" said on three separate mornings, and never done. Every claim cites the items it's based on. That review cost $0.0004.
gemma4:e2b-it-qat) for structure and embeddinggemma for memory, all served by Ollama.PAPERINSTRUMENTS_API_KEY, no review, and nothing leaves.Phone PWA ──▶ Vercel (free static site) ◀──▶ Auth0 (sign-in, free)
│
└─ /api ──▶ Vercel Function (Python, free) ──▶ Postgres + pgvector (Tiger Data, free)
▲
3 AM cron ──▶ GitHub Actions (free CPU runner): Ollama + Gemma + Whisper
| Piece | Where | Cost |
|---|---|---|
Phone app (web/) | Vercel static files | free (Hobby) |
API (api/index.py → mumble/api.py) | Vercel Function | free (Hobby) |
| 3 AM alarm | GitHub Actions schedule | free |
Night shift (mumble/nap.py) | GitHub Actions, public repo | free |
| Database | Tiger Data (Postgres + pgvector) | free tier |
| Sign-in | Auth0 | free plan |
web/ the phone app (PWA): plain HTML, CSS and JS, no build step
api/index.py Vercel's entrypoint; hands each /api request to mumble/api.py
mumble/
core.py the API's logic and quotas, shared by the cloud and the local server
api.py the cloud API (only needs psycopg and PyJWT)
auth.py checks Auth0 access tokens
main.py the local dev server (FastAPI)
nap.py the night shift: Whisper, then Gemma, then embeddings
transcribe.py / structure.py speech to text / text to to-dos, events, notes
review.py the Sunday review by Ultramarine
db.py, config.py
scripts/ demo_week.py seeds a week of spoken memos; claim.py adopts pre-sign-in data
tests/
.github/workflows/nap.yml the 3 AM schedule
vercel.json hosting: static web/, /api rewrite, security headers
Needs uv, Ollama, ffmpeg and Docker.
ollama pull gemma4:e2b-it-qat && ollama pull embeddinggemma
docker compose up -d # local Postgres + pgvector
cp .env.example .env
uv sync --all-groups # the API alone needs psycopg + PyJWT; "nap" has the models
MUMBLE_DEV=1 uv run uvicorn mumble.main:app --reload
Open http://localhost:8000, record something, then tap Can't wait? Nap now
(or run uv run python -m mumble.nap). MUMBLE_DEV=1 signs everything from this
machine in as one local account; set the AUTH0_* variables instead to sign in for real.
The microphone only works on localhost or over HTTPS. Locally, search also
matches by meaning (the query is embedded with Ollama); the serverless API
searches by keyword.
DATABASE_URL='postgres://...' uv run python -c "from mumble import db; db.init()"https://<your-app>/api, RS256, token lifetime 3600 s, offline access on). Put the domain,
client id and identifier in web/config.js.DATABASE_URL under Settings → Secrets and variables → Actions.vercel.json already says what to do: serve web/, run api/index.py for /api/*.
Add DATABASE_URL, AUTH0_DOMAIN, AUTH0_AUDIENCE, AUTH0_CLIENT_ID and
MUMBLE_ICS_SECRET (32+ random characters, signs calendar links), then deploy.
Optional: MUMBLE_MAX_ACCOUNTS (default 50), MUMBLE_ALLOWED_EMAILS (invite-only).To give one account more room: UPDATE accounts SET quota = '{"memos_per_day": 50}' WHERE email = '...'.
To switch one off: UPDATE accounts SET disabled = true WHERE email = '...'.
uv run pytest
MIT