DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Free, open-source time tracking and invoicing for freelancers, with an MCP server for any AI assistant.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗The free, open-source time tracker your AI assistant can use. Connect Claude, ChatGPT, Cursor or any MCP assistant and say "log 3 hours on Acme, then make this week's timesheet for sign-off". Or log your day in seconds yourself: type 1.5, 1:30 or 90m, press Enter, done.
Live: https://usehourly.app · Free to use, no paywall, no ads.
https://github.com/Zontak-LLC/usehourly/raw/main/public/landing/assistant-demo.mp4
UseHourly runs a remote Model Context Protocol server at https://usehourly.app/api/mcp (Streamable HTTP). It has 32 tools for projects, clients, time entries, timers, timesheets, invoices and reports; each one runs as you, so it only sees your own data. Create a token on Account > AI assistants (read-only or read and write, with an expiry), then:
claude mcp add --transport http usehourly https://usehourly.app/api/mcp --header "Authorization: Bearer <your token>"
That example is for Claude Code. Other clients just need the URL and an Authorization: Bearer <token> header in their MCP settings.
Cursor (~/.cursor/mcp.json):
{ "mcpServers": { "usehourly": { "url": "https://usehourly.app/api/mcp", "headers": { "Authorization": "Bearer <your token>" } } } }
VS Code (.vscode/mcp.json):
{ "servers": { "usehourly": { "type": "http", "url": "https://usehourly.app/api/mcp", "headers": { "Authorization": "Bearer <your token>" } } } }
For clients that can only run local (stdio) servers, such as Claude Desktop, there is a small bridge published on npm (usehourly-mcp): set the command to npx with args ["-y", "usehourly-mcp"] and USEHOURLY_API_TOKEN to your token.
Then ask: "Log 2 hours on the Acme website for yesterday" or "Make an invoice for Acme for September."
Next.js 16 (App Router) · React 19 · Tailwind CSS v4 · shadcn/ui · NextAuth v5 (credentials) · tRPC v11 · Prisma 7 with Cloudflare D1 · Vitest · Biome · deployed to Cloudflare Workers with OpenNext.
You need Node 22+.
npm install # also runs `prisma generate`
cp wrangler.example.jsonc wrangler.jsonc # then set account_id and database_id (see Deploy)
# .env.local and .dev.vars (keep the two in sync):
# AUTH_SECRET=<a long random string, e.g. `openssl rand -base64 32`>
# AUTH_URL=http://localhost:3028
npm run d1:migrate:local # create the local D1 database
npm run dev # http://localhost:3028
Register an account on the sign-up page and you are in.
npm test # scenario tests (Vitest)
npx biome check # lint and format
npx tsc --noEmit # type check
It runs on Cloudflare Workers with a D1 database:
cp wrangler.example.jsonc wrangler.jsonc and fill in your Cloudflare account id and a D1 database
(npx wrangler d1 create usehourly-db). wrangler.jsonc is git-ignored, so your ids stay out of the repo..env.production.local: NEXT_PUBLIC_APP_URL=https://app.example.com
(it is baked into the build) and set the same value as AUTH_URL in wrangler.jsonc.npm run d1:migrate:remotenpx wrangler secret put AUTH_SECRETnpm run deployPassword reset and email confirmation need an email service. UseHourly sends through Resend: verify your sending domain there, then set two values on the Worker:
npx wrangler secret put RESEND_API_KEY
npx wrangler secret put EMAIL_FROM # for example: UseHourly <[email protected]>
Without them the app works as before, and the forgot-password page says email isn't set up.
.circleci/config.yml runs the checks on every push and, on main, applies the D1 migrations and
deploys. The deploy token is a secret, so keep it out of the project settings: create a context
named usehourly-production (Organization Settings > Contexts), add an expression restriction
pipeline.git.branch == "main", and put the token in it. Only the deploy job on main can read it.
| Context variable | Value |
|---|---|
CLOUDFLARE_API_TOKEN | a token with Workers Scripts: Edit and D1: Edit |
In the CircleCI project settings add these environment variables:
| Variable | Value |
|---|---|
CLOUDFLARE_ACCOUNT_ID | your Cloudflare account id |
D1_DATABASE_ID | the id of your D1 database |
APP_URL | your public address, for example https://app.example.com |
Optional: WORKER_NAME, D1_DATABASE_NAME, CUSTOM_DOMAIN. AUTH_SECRET stays a Worker secret
(npx wrangler secret put AUTH_SECRET, once); CI never sees it. scripts/ci-wrangler-config.mjs
writes wrangler.jsonc from these variables, so no account ids live in the repository.
UseHourly is free. If it saves you time you can sponsor it on GitHub.
Thank you to everyone who helps keep UseHourly free:
Be the first: sponsor UseHourly on GitHub.
Built on the excellent next-shadcn-admin-dashboard template by Mohammed Arham Khan.
Released under the MIT License. The code is open; the name "UseHourly" and its logo are not part of the license.