Skip to content

Commit 21c3910

Browse files
authored
feat(ui-tars): sunset UI-TARS-desktop remote operator (#1135)
1 parent 9f586e4 commit 21c3910

12 files changed

Lines changed: 105 additions & 257 deletions

File tree

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ Visit the comprehensive [Quick Start](https://agent-tars.com/guide/get-started/q
240240
<img alt="UI-TARS" width="260" src="./apps/ui-tars/resources/icon.png">
241241
</p>
242242

243-
UI-TARS Desktop is a native GUI agent driven by [UI-TARS](https://github.com/bytedance/UI-TARS) and Seed-1.5-VL/1.6 series models, available on your local computer and remote VM sandbox on cloud.
243+
UI-TARS Desktop is a native GUI agent for your local computer, driven by [UI-TARS](https://github.com/bytedance/UI-TARS) and Seed-1.5-VL/1.6 series models.
244244

245245
<div align="center">
246246
<p>
@@ -272,7 +272,6 @@ UI-TARS Desktop is a native GUI agent driven by [UI-TARS](https://github.com/byt
272272
- 💻 Cross-platform support (Windows/MacOS/Browser)
273273
- 🔄 Real-time feedback and status display
274274
- 🔐 Private and secure - fully local processing
275-
- 🛠️ Effortless setup and intuitive remote operators
276275

277276
### Quick Start
278277

README.zh-CN.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@
4040
<br>
4141
<br>
4242
它主要提供
43-
<a href="https://github.com/bytedance/UI-TARS-desktop/blob/docs/new-readme/docs/quick-start.md#get-model-and-run" target="_blank">本地</a>和
44-
<a href="https://github.com/bytedance/UI-TARS-desktop/blob/docs/new-readme/docs/quick-start.md#try-out-our-free-remote-operators" target="_blank">远程</a>计算机以及浏览器操作器。
43+
<a href="https://github.com/bytedance/UI-TARS-desktop/blob/docs/new-readme/docs/quick-start.md#get-model-and-run" target="_blank">本地</a>计算机以及浏览器操作器。
4544
</td>
4645
</tr>
4746
</tbody>
@@ -238,7 +237,7 @@ agent-tars --provider anthropic --model claude-3-7-sonnet-latest --apiKey your-a
238237
<img alt="UI-TARS" width="260" src="./apps/ui-tars/resources/icon.png">
239238
</p>
240239

241-
UI-TARS Desktop 是一个由 [UI-TARS](https://github.com/bytedance/UI-TARS) 和 Seed-1.5-VL/1.6 系列模型驱动的原生 GUI agent,可在你的本地计算机和云端远程 VM 沙箱上使用
240+
UI-TARS Desktop 是一个由 [UI-TARS](https://github.com/bytedance/UI-TARS) 和 Seed-1.5-VL/1.6 系列模型驱动的原生 GUI agent,可在你的本地计算机上使用
242241

243242
<div align="center">
244243
<p>
@@ -270,7 +269,6 @@ UI-TARS Desktop 是一个由 [UI-TARS](https://github.com/bytedance/UI-TARS) 和
270269
- 💻 跨平台支持 (Windows/MacOS/Browser)
271270
- 🔄 实时反馈和状态显示
272271
- 🔐 私密且安全 - 完全本地处理
273-
- 🛠️ 轻松设置和直观的远程操作器
274272

275273
### Quick Start
276274

apps/ui-tars/images/mac_app.png

-136 KB
Loading
-90.9 KB
Loading

apps/ui-tars/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ui-tars-desktop",
3-
"version": "0.2.3",
3+
"version": "0.2.4",
44
"private": true,
55
"main": "./dist/main/main.js",
66
"packageManager": "pnpm@9.10.0",

apps/ui-tars/src/main/remote/shared.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export abstract class BaseRemoteComputer {
3737
targetX: number,
3838
targetY: number,
3939
): Promise<void>;
40+
// secretlint-disable-next-line @secretlint/secretlint-rule-pattern
4041
abstract pressKey(key: string): Promise<void>;
4142
abstract typeText(text: string): Promise<void>;
4243
abstract scroll(
@@ -49,8 +50,7 @@ export abstract class BaseRemoteComputer {
4950
abstract takeScreenshot(): Promise<string>;
5051
}
5152

52-
const UI_TARS_PROXY_HOST =
53-
'https://sd17rrmnhj5i8uvr67j30.apigateway-cn-beijing.volceapi.com';
53+
const UI_TARS_PROXY_HOST = '';
5454

5555
const VER = '/api/v1';
5656
const REGISTER_URL = `${UI_TARS_PROXY_HOST}${VER}/register`;
@@ -59,7 +59,7 @@ const BROWSER_URL = `${UI_TARS_PROXY_HOST}${VER}/browsers`;
5959
const TIME_URL = `${UI_TARS_PROXY_HOST}${VER}/time-balance`;
6060
const FREE_MODEL_BASE_URL = `${UI_TARS_PROXY_HOST}${VER}`;
6161

62-
const COMPUTER_USE_HOST = 'https://computer-use.console.volcengine.com';
62+
const COMPUTER_USE_HOST = '';
6363

6464
export {
6565
UI_TARS_PROXY_HOST,
Lines changed: 33 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import CountUp from 'react-countup';
21
// import { Gift, CircleArrowUp } from 'lucide-react';
32
import { memo, useEffect, useState } from 'react';
43
import { RemoteResourceStatus } from '@renderer/hooks/useRemoteResource';
@@ -10,93 +9,61 @@ import {
109
import { Button } from '@renderer/components/ui/button';
1110
import { Operator } from '@main/store/types';
1211

12+
import { OPERATOR_URL_MAP } from '../../const';
13+
1314
interface CountDownProps {
1415
operator: Operator;
1516
start?: number;
1617
status: RemoteResourceStatus;
1718
}
1819

19-
const formatTime = (seconds: number) => {
20-
const hours = Math.floor(seconds / 3600);
21-
const minutes = Math.floor((seconds % 3600) / 60);
22-
const remainingSeconds = seconds % 60;
23-
24-
return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(remainingSeconds).padStart(2, '0')}`;
25-
};
26-
27-
const map = {
28-
[Operator.RemoteComputer]: {
29-
text: 'If you need to use it for a long-term and stable period, you can log in to the Volcano Engine FaaS to experience the Online Computer Use Agent.',
30-
url: 'https://console.volcengine.com/vefaas/region:vefaas+cn-beijing/application/create?templateId=680b0a890e881f000862d9f0&channel=github&source=ui-tars',
31-
},
32-
[Operator.RemoteBrowser]: {
33-
text: 'If you need to use it for a long-term and stable period, you can log in to the Volcano Engine FaaS to experience the Online Browser Use Agent.',
34-
url: 'https://console.volcengine.com/vefaas/region:vefaas+cn-beijing/application/create?templateId=67f7b4678af5a6000850556c&channel=github&source=ui-tars',
35-
},
36-
};
37-
3820
const UpgradeCard = memo(({ operator }: { operator: Operator }) => (
3921
<HoverCardContent className="w-72 p-4" sideOffset={10}>
4022
<div>
4123
{/* <div className="flex items-center gap-2 mb-2"> */}
4224
{/* <CircleArrowUp className="h-5 w-5" /> */}
4325
{/* <h3 className="text-lg font-semibold">Upgrade</h3> */}
4426
{/* </div> */}
45-
<p className="text-sm text-gray-600 mb-4">{map[operator]?.text}</p>
27+
<p className="text-sm text-gray-600 mb-4">
28+
{OPERATOR_URL_MAP[operator]?.text}
29+
</p>
4630
<Button
4731
className="w-full"
48-
onClick={() => window.open(map[operator]?.url, '_blank')}
32+
onClick={() => window.open(OPERATOR_URL_MAP[operator]?.url, '_blank')}
4933
>
5034
Learn more
5135
</Button>
5236
</div>
5337
</HoverCardContent>
5438
));
5539

56-
export const CountDown = memo(
57-
({ operator, status, start = 0 }: CountDownProps) => {
58-
const [showUpgrade, setShowUpgrade] = useState(false);
40+
export const CountDown = memo(({ operator, start = 0 }: CountDownProps) => {
41+
const [showUpgrade, setShowUpgrade] = useState(false);
5942

60-
useEffect(() => {
61-
if (start >= 30 * 60 * 1000) {
62-
setShowUpgrade(true);
63-
}
64-
}, [start]);
43+
useEffect(() => {
44+
if (start >= 30 * 60 * 1000) {
45+
setShowUpgrade(true);
46+
}
47+
}, [start]);
6548

66-
return (
67-
<div
68-
className="flex items-center gap-2 rounded-md bg-green-50 px-3 h-8 text-sm cursor-default"
69-
style={{ '-webkit-app-region': 'no-drag' }}
49+
return (
50+
<div
51+
className="flex items-center gap-2 rounded-md bg-green-50 px-3 h-8 text-sm cursor-default"
52+
style={{ '-webkit-app-region': 'no-drag' }}
53+
>
54+
<HoverCard
55+
open={showUpgrade}
56+
openDelay={0}
57+
closeDelay={100}
58+
onOpenChange={setShowUpgrade}
7059
>
71-
{/* <Gift className="!h-4 !w-4 text-yellow-500" /> */}
72-
<span className="text-gray-700">
73-
<span className="font-medium">30</span>-minute free credit
74-
</span>
75-
{status === 'connected' && (
76-
<CountUp
77-
className="font-mono font-medium"
78-
start={start}
79-
end={30 * 60}
80-
duration={30 * 60}
81-
formattingFn={formatTime}
82-
useEasing={false}
83-
/>
84-
)}
85-
<div className="w-0.5 h-4 bg-gray-200"></div>
86-
<HoverCard
87-
open={showUpgrade}
88-
openDelay={0}
89-
closeDelay={100}
90-
onOpenChange={setShowUpgrade}
91-
>
92-
<HoverCardTrigger asChild>
93-
<a className="ml-auto text-blue-500 hover:text-blue-600 hover:underline cursor-pointer">
94-
Learn more
95-
</a>
96-
</HoverCardTrigger>
97-
<UpgradeCard operator={operator} />
98-
</HoverCard>
99-
</div>
100-
);
101-
},
102-
);
60+
<HoverCardTrigger asChild>
61+
<a className="ml-auto text-blue-500 hover:text-blue-600 hover:underline cursor-pointer">
62+
Learn more
63+
</a>
64+
</HoverCardTrigger>
65+
<UpgradeCard operator={operator} />
66+
</HoverCard>
67+
</div>
68+
);
69+
});

apps/ui-tars/src/renderer/src/const/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,18 @@
22
* Copyright (c) 2025 Bytedance, Inc. and its affiliates.
33
* SPDX-License-Identifier: Apache-2.0
44
*/
5+
import { Operator } from '@main/store/types';
6+
57
export const COMPUTER_OPERATOR = 'Computer Operator';
68
export const BROWSER_OPERATOR = 'Browser Operator';
9+
10+
export const OPERATOR_URL_MAP = {
11+
[Operator.RemoteComputer]: {
12+
text: 'If you need to use it for a long-term and stable period, you can log in to the Volcano Engine FaaS to experience the Online Computer Use Agent.',
13+
url: 'https://console.volcengine.com/vefaas/region:vefaas+cn-beijing/application/create?templateId=680b0a890e881f000862d9f0&channel=github&source=ui-tars',
14+
},
15+
[Operator.RemoteBrowser]: {
16+
text: 'If you need to use it for a long-term and stable period, you can log in to the Volcano Engine FaaS to experience the Online Browser Use Agent.',
17+
url: 'https://console.volcengine.com/vefaas/region:vefaas+cn-beijing/application/create?templateId=67f7b4678af5a6000850556c&channel=github&source=ui-tars',
18+
},
19+
};

0 commit comments

Comments
 (0)