upfynai-code 2.4.1 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -0
- package/client/dist/assets/AppContent-C0CyP3g5.js +513 -0
- package/client/dist/assets/CanvasPanel-0u9QR7U-.js +34 -0
- package/client/dist/assets/CanvasPanel-WhZulBJw.css +1 -0
- package/client/dist/assets/DashboardPanel-Dgqw1yZk.js +1 -0
- package/client/dist/assets/LoginModal-CZDEzqjK.js +19 -0
- package/client/dist/assets/Onboarding-DR6NZ4Vz.js +1 -0
- package/client/dist/assets/{SetupForm-B4p8im5O.js → SetupForm-D49gtWY4.js} +1 -1
- package/client/dist/assets/WorkflowsPanel-CqlbEJA_.js +1 -0
- package/client/dist/assets/{ar-SA-G6X2FPQ2-2gfmdvHk.js → ar-SA-G6X2FPQ2-BWqa1yBH.js} +2 -2
- package/client/dist/assets/{arc-DCZSHhoJ.js → arc-BegSKqEW.js} +1 -1
- package/client/dist/assets/az-AZ-76LH7QW2-DrVlbZDP.js +1 -0
- package/client/dist/assets/{bg-BG-XCXSNQG7-D6__XtOK.js → bg-BG-XCXSNQG7-DdunjBgT.js} +2 -2
- package/client/dist/assets/{blockDiagram-38ab4fdb-Cfbaeyp6.js → blockDiagram-38ab4fdb-BKMbwGHu.js} +2 -2
- package/client/dist/assets/{bn-BD-2XOGV67Q-DHNJw3OG.js → bn-BD-2XOGV67Q-_7DtmvwO.js} +2 -2
- package/client/dist/assets/{c4Diagram-3d4e48cf-BBCnjOTy.js → c4Diagram-3d4e48cf-hJuiHhSn.js} +2 -2
- package/client/dist/assets/{ca-ES-6MX7JW3Y-r5g4o3zQ.js → ca-ES-6MX7JW3Y-BFIrmojG.js} +3 -3
- package/client/dist/assets/channel-Bur-rRTp.js +1 -0
- package/client/dist/assets/classDiagram-70f12bd4-BjiAf9cM.js +2 -0
- package/client/dist/assets/classDiagram-v2-f2320105-pwBewejc.js +2 -0
- package/client/dist/assets/clone-BtqXeoBJ.js +1 -0
- package/client/dist/assets/{createText-2e5e7dd3-B8jCDmF_.js → createText-2e5e7dd3-Dq_acOWe.js} +1 -1
- package/client/dist/assets/{cs-CZ-2BRQDIVT-p08jRLRC.js → cs-CZ-2BRQDIVT-B-x4F6TJ.js} +2 -2
- package/client/dist/assets/{da-DK-5WZEPLOC-CnhOImFf.js → da-DK-5WZEPLOC-Btlc8Dgn.js} +2 -2
- package/client/dist/assets/{de-DE-XR44H4JA-BunSXZ-Y.js → de-DE-XR44H4JA-BVu3ZIoD.js} +2 -2
- package/client/dist/assets/{edges-e0da2a9e-CGBBhG8k.js → edges-e0da2a9e-DH0wVTXR.js} +1 -1
- package/client/dist/assets/{el-GR-BZB4AONW-D4wv1oIz.js → el-GR-BZB4AONW-h2ll8_ZC.js} +2 -2
- package/client/dist/assets/{erDiagram-9861fffd-CYaF3q1I.js → erDiagram-9861fffd-BYezLIR7.js} +2 -2
- package/client/dist/assets/{es-ES-U4NZUMDT-CGeTKXgd.js → es-ES-U4NZUMDT-Cveiulwt.js} +2 -2
- package/client/dist/assets/{eu-ES-A7QVB2H4-Cayx1TxR.js → eu-ES-A7QVB2H4-DQluL2PY.js} +2 -2
- package/client/dist/assets/{fa-IR-HGAKTJCU-CmUg8pmw.js → fa-IR-HGAKTJCU-BJtcMBSv.js} +2 -2
- package/client/dist/assets/{fi-FI-Z5N7JZ37-xvHcPhsU.js → fi-FI-Z5N7JZ37-D8NfbVXV.js} +2 -2
- package/client/dist/assets/{flowDb-956e92f1-C-_LFz70.js → flowDb-956e92f1-scnUykhM.js} +1 -1
- package/client/dist/assets/{flowDiagram-66a62f08-C1sHdSjn.js → flowDiagram-66a62f08-jVyWsfyU.js} +2 -2
- package/client/dist/assets/flowDiagram-v2-96b9c2cf-N6xgi25h.js +1 -0
- package/client/dist/assets/{flowchart-elk-definition-4a651766-CNGfpudb.js → flowchart-elk-definition-4a651766-gKGX3HqR.js} +2 -2
- package/client/dist/assets/{fr-FR-RHASNOE6-DBoHEcNj.js → fr-FR-RHASNOE6-vdj42kC6.js} +2 -2
- package/client/dist/assets/ganttDiagram-c361ad54-C2CiWFUP.js +257 -0
- package/client/dist/assets/{gitGraphDiagram-72cf32ee-DojCDvlS.js → gitGraphDiagram-72cf32ee-C59Yz2LK.js} +2 -2
- package/client/dist/assets/{gl-ES-HMX3MZ6V-p6hrn2cN.js → gl-ES-HMX3MZ6V-DQo0TzoP.js} +2 -2
- package/client/dist/assets/{graph-DXM7lcy1.js → graph-Dx_H43Kv.js} +1 -1
- package/client/dist/assets/{he-IL-6SHJWFNN-y2jEX6-0.js → he-IL-6SHJWFNN-DKXK5e33.js} +2 -2
- package/client/dist/assets/{hi-IN-IWLTKZ5I-99pNfyWr.js → hi-IN-IWLTKZ5I-C2Qgqc0R.js} +2 -2
- package/client/dist/assets/{hu-HU-A5ZG7DT2-hygceGMS.js → hu-HU-A5ZG7DT2-Ss-6vX0m.js} +2 -2
- package/client/dist/assets/{id-ID-SAP4L64H-CyIqi1hv.js → id-ID-SAP4L64H-D7Wsg1S2.js} +2 -2
- package/client/dist/assets/{index-3862675e-4idOQN2N.js → index-3862675e-u8Nv7hHC.js} +1 -1
- package/client/dist/assets/{index-BHZfFT_V.js → index-BVowJdZF.js} +4 -4
- package/client/dist/assets/{index-BGmwbRlb.js → index-ce18TYkg.js} +6 -6
- package/client/dist/assets/index-kQoJx-bc.css +1 -0
- package/client/dist/assets/{infoDiagram-f8f76790-CFLrHqtc.js → infoDiagram-f8f76790-LmoJYsxo.js} +2 -2
- package/client/dist/assets/{it-IT-JPQ66NNP-DzVvVdQI.js → it-IT-JPQ66NNP-CAPTVl7M.js} +2 -2
- package/client/dist/assets/{ja-JP-DBVTYXUO-BI4fPexV.js → ja-JP-DBVTYXUO-eNVPawR2.js} +2 -2
- package/client/dist/assets/{journeyDiagram-49397b02-C3CFDo8z.js → journeyDiagram-49397b02-BaJqehpR.js} +2 -2
- package/client/dist/assets/kaa-6HZHGXH3-tpuNkKhS.js +1 -0
- package/client/dist/assets/{kab-KAB-ZGHBKWFO-DBI_ri48.js → kab-KAB-ZGHBKWFO-Dp83kx4x.js} +2 -2
- package/client/dist/assets/kk-KZ-P5N5QNE5-B9IlC6YN.js +1 -0
- package/client/dist/assets/{km-KH-HSX4SM5Z-DOMFSres.js → km-KH-HSX4SM5Z-B_KMYaMj.js} +2 -2
- package/client/dist/assets/{ko-KR-MTYHY66A-tb08hXzd.js → ko-KR-MTYHY66A-yebnUNdb.js} +3 -3
- package/client/dist/assets/{ku-TR-6OUDTVRD-DlIQCCY4.js → ku-TR-6OUDTVRD-BR6fh6-5.js} +2 -2
- package/client/dist/assets/{layout-B_11mCXA.js → layout-DLl5Jwcl.js} +1 -1
- package/client/dist/assets/{line-B-qmK_vI.js → line-FpB7omSK.js} +1 -1
- package/client/dist/assets/{linear-Ph6uuYcX.js → linear-CkXqUFJ8.js} +1 -1
- package/client/dist/assets/{lt-LT-XHIRWOB4--qWy24_Z.js → lt-LT-XHIRWOB4-SutZSWtR.js} +2 -2
- package/client/dist/assets/{lv-LV-5QDEKY6T-Bnd_1GDb.js → lv-LV-5QDEKY6T-DuAxdcZL.js} +2 -2
- package/client/dist/assets/{mindmap-definition-fc14e90a-Do79tIc0.js → mindmap-definition-fc14e90a-DyxXOExh.js} +2 -2
- package/client/dist/assets/{mr-IN-CRQNXWMA-BsV6HaD9.js → mr-IN-CRQNXWMA-DqDUWM_8.js} +2 -2
- package/client/dist/assets/my-MM-5M5IBNSE-C40kMFMR.js +1 -0
- package/client/dist/assets/{nb-NO-T6EIAALU-Cvf9FdSF.js → nb-NO-T6EIAALU-DVij32Ju.js} +3 -3
- package/client/dist/assets/{nl-NL-IS3SIHDZ-DA1yqpXw.js → nl-NL-IS3SIHDZ-rT84mDYq.js} +2 -2
- package/client/dist/assets/{nn-NO-6E72VCQL-89lm3vku.js → nn-NO-6E72VCQL-BBZXBW8V.js} +2 -2
- package/client/dist/assets/{oc-FR-POXYY2M6-BsrjTJQh.js → oc-FR-POXYY2M6-DzjOugOf.js} +2 -2
- package/client/dist/assets/{pa-IN-N4M65BXN-CczefYaj.js → pa-IN-N4M65BXN-DD1iU8_F.js} +2 -2
- package/client/dist/assets/{percentages-BXMCSKIN-Be6p9phi.js → percentages-BXMCSKIN-WVlHS4wx.js} +7 -7
- package/client/dist/assets/{pieDiagram-8a3498a8-CfblQHdm.js → pieDiagram-8a3498a8-Dd_85qBH.js} +3 -3
- package/client/dist/assets/{pl-PL-T2D74RX3-DdhH-zcK.js → pl-PL-T2D74RX3-ukVXa48G.js} +2 -2
- package/client/dist/assets/{pt-BR-5N22H2LF-gpwlheL6.js → pt-BR-5N22H2LF-BibawarT.js} +2 -2
- package/client/dist/assets/{pt-PT-UZXXM6DQ-Cs87vICi.js → pt-PT-UZXXM6DQ-So3i9l9w.js} +2 -2
- package/client/dist/assets/{quadrantDiagram-120e2f19-CRMSamSP.js → quadrantDiagram-120e2f19-C4dFVDEx.js} +2 -2
- package/client/dist/assets/{requirementDiagram-deff3bca-D3LBN016.js → requirementDiagram-deff3bca-DrTO7yFl.js} +2 -2
- package/client/dist/assets/{ro-RO-JPDTUUEW-CWTSJ1Dt.js → ro-RO-JPDTUUEW-DY0Xq_Hd.js} +2 -2
- package/client/dist/assets/{ru-RU-B4JR7IUQ-Bq7aN2ep.js → ru-RU-B4JR7IUQ-B7u_Zvkd.js} +2 -2
- package/client/dist/assets/sankeyDiagram-04a897e0-D24gfzuS.js +8 -0
- package/client/dist/assets/{sequenceDiagram-704730f1-BRYXVDGX.js → sequenceDiagram-704730f1-Dgji2XLQ.js} +2 -2
- package/client/dist/assets/si-LK-N5RQ5JYF-OejsLzQ_.js +1 -0
- package/client/dist/assets/{sk-SK-C5VTKIMK-ByjKQzUb.js → sk-SK-C5VTKIMK-_vy2Bt-M.js} +2 -2
- package/client/dist/assets/{sl-SI-NN7IZMDC-B8WCyMBU.js → sl-SI-NN7IZMDC-DKOl_u2M.js} +2 -2
- package/client/dist/assets/stateDiagram-587899a1-CJ8eBaiU.js +1 -0
- package/client/dist/assets/stateDiagram-v2-d93cdb3a-C5K3l-Nt.js +1 -0
- package/client/dist/assets/{styles-6aaf32cf-Dr-lfIOW.js → styles-6aaf32cf-DAKE0jbx.js} +1 -1
- package/client/dist/assets/{styles-9a916d00-DS4wRpL7.js → styles-9a916d00-LFAJCgEy.js} +1 -1
- package/client/dist/assets/{styles-c10674c1-nKRF6NrH.js → styles-c10674c1-CllKO8NG.js} +1 -1
- package/client/dist/assets/{subset-shared.chunk-KT79s7KG.js → subset-shared.chunk-Uy-J87FQ.js} +3 -3
- package/client/dist/assets/subset-worker.chunk-dvgDvqt9.js +1 -0
- package/client/dist/assets/{sv-SE-XGPEYMSR-BiIPUVbv.js → sv-SE-XGPEYMSR-CDCB2ZV5.js} +2 -2
- package/client/dist/assets/{svgDrawCommon-08f97a94-C3uP9PYr.js → svgDrawCommon-08f97a94-CObOzbFQ.js} +1 -1
- package/client/dist/assets/{ta-IN-2NMHFXQM-Cidadso2.js → ta-IN-2NMHFXQM-DHUNdO69.js} +2 -2
- package/client/dist/assets/th-TH-HPSO5L25-zI2hnBq3.js +2 -0
- package/client/dist/assets/{timeline-definition-85554ec2-BSsLsIgF.js → timeline-definition-85554ec2-C2XHRmxK.js} +2 -2
- package/client/dist/assets/{tr-TR-DEFEU3FU-DaFcI-KL.js → tr-TR-DEFEU3FU-l-6Hu4-D.js} +2 -2
- package/client/dist/assets/{uk-UA-QMV73CPH-DkBW36St.js → uk-UA-QMV73CPH-CqSOwrl7.js} +3 -3
- package/client/dist/assets/vendor-codemirror-D_s0aGBu.js +35 -0
- package/client/dist/assets/{vendor-icons-Dh9m_Ydt.js → vendor-icons-Lb69KSFJ.js} +167 -117
- package/client/dist/assets/{vi-VN-M7AON7JQ-KrtfxOzl.js → vi-VN-M7AON7JQ-CUL8-mBZ.js} +2 -2
- package/client/dist/assets/{xychartDiagram-e933f94c-CgNgZ4pp.js → xychartDiagram-e933f94c-1fmf6slj.js} +2 -2
- package/client/dist/assets/{zh-CN-LNUGB5OW-BQu12RoD.js → zh-CN-LNUGB5OW-CB5y5VVU.js} +3 -3
- package/client/dist/assets/zh-HK-E62DVLB3-BHcrrEeJ.js +1 -0
- package/client/dist/assets/{zh-TW-RAJ6MFWO-ffJWgVxn.js → zh-TW-RAJ6MFWO-DoDUdkaJ.js} +2 -2
- package/client/dist/index.html +3 -3
- package/package.json +20 -8
- package/server/cli.js +44 -0
- package/server/database/auth.db +0 -0
- package/server/database/db.js +203 -1
- package/server/index.js +111 -18
- package/server/middleware/auth.js +11 -6
- package/server/projects.js +95 -202
- package/server/relay-client.js +47 -10
- package/server/routes/auth.js +6 -0
- package/server/routes/dashboard.js +52 -0
- package/server/routes/projects.js +38 -35
- package/server/routes/voice.js +198 -0
- package/server/routes/webhooks.js +166 -0
- package/server/routes/workflows.js +118 -0
- package/server/services/whisperService.js +84 -0
- package/server/services/workflowScheduler.js +186 -0
- package/client/dist/assets/AppContent-DTZ2FbvM.js +0 -513
- package/client/dist/assets/CanvasPanel-DlTW6Jh6.js +0 -6
- package/client/dist/assets/CanvasPanel-q4HEqNtV.css +0 -1
- package/client/dist/assets/LoginModal-CWoFm0au.js +0 -19
- package/client/dist/assets/Onboarding-CtIoXiTp.js +0 -1
- package/client/dist/assets/az-AZ-76LH7QW2-CDdeucRZ.js +0 -1
- package/client/dist/assets/channel-O3ovC0x9.js +0 -1
- package/client/dist/assets/classDiagram-70f12bd4-D0lhAcxU.js +0 -2
- package/client/dist/assets/classDiagram-v2-f2320105-BuwUsF3F.js +0 -2
- package/client/dist/assets/clone-BG9u7vLi.js +0 -1
- package/client/dist/assets/flowDiagram-v2-96b9c2cf-Cd0Iascd.js +0 -1
- package/client/dist/assets/ganttDiagram-c361ad54-B8HJQqjt.js +0 -257
- package/client/dist/assets/index-B8wwD_Xo.css +0 -1
- package/client/dist/assets/kaa-6HZHGXH3-fwOleoQB.js +0 -1
- package/client/dist/assets/kk-KZ-P5N5QNE5-zpl7uvyF.js +0 -1
- package/client/dist/assets/my-MM-5M5IBNSE-kZQURVIi.js +0 -1
- package/client/dist/assets/sankeyDiagram-04a897e0-CsFqOQZN.js +0 -8
- package/client/dist/assets/si-LK-N5RQ5JYF-BBjcNYQh.js +0 -1
- package/client/dist/assets/stateDiagram-587899a1-BHoy9LtD.js +0 -1
- package/client/dist/assets/stateDiagram-v2-d93cdb3a-BvMUA6bS.js +0 -1
- package/client/dist/assets/subset-worker.chunk-BMx1eyv3.js +0 -1
- package/client/dist/assets/th-TH-HPSO5L25-CFNnJwSv.js +0 -2
- package/client/dist/assets/vendor-codemirror-langs-BH1ZcKHY.js +0 -20
- package/client/dist/assets/vendor-codemirror-rix45NST.js +0 -16
- package/client/dist/assets/zh-HK-E62DVLB3-zx9CvERq.js +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Upfyn-Code
|
|
2
|
+
|
|
3
|
+
**Visual AI coding interface for Claude Code, Cursor & Codex.**
|
|
4
|
+
|
|
5
|
+
Canvas whiteboard, multi-agent chat, integrated terminal, git management, voice assistant, and MCP protocol — all in one browser-based IDE.
|
|
6
|
+
|
|
7
|
+
By [Thinqmesh Technologies](https://thinqmesh.com)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## What is Upfyn-Code?
|
|
12
|
+
|
|
13
|
+
Upfyn-Code gives you a **visual web interface** for AI coding agents. Instead of working in a plain terminal, you get a full IDE experience with:
|
|
14
|
+
|
|
15
|
+
- **Multi-Agent Chat** — Claude Code, Cursor, Codex, and 200+ models via OpenRouter
|
|
16
|
+
- **Visual Canvas** — Infinite whiteboard with AI-powered blocks (Chat, Research, Code, Notes, PDF, Dashboard)
|
|
17
|
+
- **Integrated Terminal** — Multi-tab shell with full ANSI color support
|
|
18
|
+
- **File Explorer** — Browse, edit, and manage project files
|
|
19
|
+
- **Git Panel** — Stage, commit, push, view diffs, switch branches
|
|
20
|
+
- **Voice Assistant** — Talk to Upfyn hands-free
|
|
21
|
+
- **Task Tracker** — AI-powered task breakdown from PRDs
|
|
22
|
+
- **MCP Protocol** — Connect to Claude Code, Cursor, or any MCP-compatible tool
|
|
23
|
+
- **Dashboard** — Session analytics, usage stats, and getting-started guide
|
|
24
|
+
- **BYOK** — Bring Your Own API Key (Anthropic, OpenAI, Google, OpenRouter)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Two ways to use it
|
|
29
|
+
|
|
30
|
+
### 1. Local mode (free, self-hosted)
|
|
31
|
+
|
|
32
|
+
Install the package and run everything on your machine. No account needed.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g upfynai-code
|
|
36
|
+
|
|
37
|
+
# Launch Claude Code + web UI
|
|
38
|
+
uc
|
|
39
|
+
|
|
40
|
+
# Or start the web server only
|
|
41
|
+
uc start
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The server starts at `http://localhost:3001`. It auto-detects your installed AI agents and creates a local user automatically.
|
|
45
|
+
|
|
46
|
+
**What you get locally:**
|
|
47
|
+
- Full web UI with all features (chat, canvas, terminal, git, files, tasks)
|
|
48
|
+
- Direct SDK calls to your local Claude Code / Codex / Cursor
|
|
49
|
+
- No network round-trip — everything runs on your machine
|
|
50
|
+
- Works offline (except AI queries which need API access)
|
|
51
|
+
|
|
52
|
+
### 2. Cloud mode (subscription required)
|
|
53
|
+
|
|
54
|
+
Access your machine from **any browser, anywhere** via [cli.upfyn.com](https://cli.upfyn.com).
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# 1. Sign up at cli.upfyn.com and get your relay token
|
|
58
|
+
# 2. Connect your machine
|
|
59
|
+
uc connect --server https://cli.upfyn.com --key upfyn_your_token
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Once connected, your local machine is bridged to the web UI. AI prompts, terminal commands, file operations, and git — all route through an encrypted relay to your machine.
|
|
63
|
+
|
|
64
|
+
**What you need for cloud mode:**
|
|
65
|
+
- An active subscription at [cli.upfyn.com/pricing](https://cli.upfyn.com/pricing)
|
|
66
|
+
- Your relay token (provided after signup)
|
|
67
|
+
- The CLI installed on your machine
|
|
68
|
+
|
|
69
|
+
**Why subscribe?**
|
|
70
|
+
- Access your dev environment from any device (phone, tablet, another PC)
|
|
71
|
+
- MCP API access — connect Claude Code or Cursor to Upfyn-Code remotely
|
|
72
|
+
- Voice assistant with daily call allowance
|
|
73
|
+
- Priority support
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## CLI Commands
|
|
78
|
+
|
|
79
|
+
| Command | Description |
|
|
80
|
+
|---------|-------------|
|
|
81
|
+
| `uc` | Launch Claude Code with Upfyn web UI |
|
|
82
|
+
| `uc start` | Start the local web server only |
|
|
83
|
+
| `uc connect --key <token>` | Connect to cli.upfyn.com (subscription required) |
|
|
84
|
+
| `uc config --api-key <key>` | Save your Anthropic API key |
|
|
85
|
+
| `uc status` | Show configuration and data locations |
|
|
86
|
+
| `uc install-commands` | Install `/upfynai-*` slash commands for Claude Code |
|
|
87
|
+
| `uc update` | Update to latest version |
|
|
88
|
+
| `uc help` | Show all commands |
|
|
89
|
+
|
|
90
|
+
## Slash Commands
|
|
91
|
+
|
|
92
|
+
When you run `uc`, these slash commands are automatically available inside Claude Code:
|
|
93
|
+
|
|
94
|
+
| Command | Description |
|
|
95
|
+
|---------|-------------|
|
|
96
|
+
| `/upfynai-connect` | Connect CLI session to web UI |
|
|
97
|
+
| `/upfynai-disconnect` | Disconnect from web UI |
|
|
98
|
+
| `/upfynai-status` | Show connection status |
|
|
99
|
+
| `/upfynai-doctor` | Run diagnostics |
|
|
100
|
+
|
|
101
|
+
## BYOK (Bring Your Own Key)
|
|
102
|
+
|
|
103
|
+
Even without a connected machine, you can use AI chat by adding your own API keys in Settings:
|
|
104
|
+
|
|
105
|
+
- **Anthropic** — Claude models (Sonnet, Opus, Haiku)
|
|
106
|
+
- **OpenAI** — GPT models
|
|
107
|
+
- **OpenRouter** — 200+ models from all providers
|
|
108
|
+
- **Google AI** — Gemini models
|
|
109
|
+
|
|
110
|
+
Configure via the web UI (Settings > AI Providers) or CLI:
|
|
111
|
+
```bash
|
|
112
|
+
uc config --api-key sk-ant-api03-your-key
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Requirements
|
|
116
|
+
|
|
117
|
+
- **Node.js 18+**
|
|
118
|
+
- At least one AI agent installed:
|
|
119
|
+
```bash
|
|
120
|
+
npm install -g @anthropic-ai/claude-code # Claude Code
|
|
121
|
+
npm install -g @openai/codex # OpenAI Codex
|
|
122
|
+
# Cursor — install from cursor.com
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Documentation
|
|
126
|
+
|
|
127
|
+
Full documentation: [cli.upfyn.com/docs](https://cli.upfyn.com/docs)
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
GPL-3.0 — Thinqmesh Technologies
|