[00:00] (0.16s)
Today, I'm going to introduce you to a
[00:02] (2.00s)
new AI tool that has been gaining a lot
[00:04] (4.16s)
of traction and becoming really popular
[00:06] (6.40s)
recently, mainly because its development
[00:08] (8.48s)
pattern mirrors how real software is
[00:10] (10.96s)
built in the real world. As you'll see
[00:12] (12.80s)
in this video, it actually built a
[00:14] (14.64s)
native desktop chat GPT application,
[00:17] (17.04s)
which is genuinely impressive. It
[00:18] (18.72s)
doesn't solve one big problem all at
[00:20] (20.48s)
once. Instead, everything is broken down
[00:22] (22.72s)
into smaller parts with different
[00:24] (24.64s)
responsibilities distributed across
[00:26] (26.64s)
multiple roles. In this case, those
[00:28] (28.64s)
roles are filled by different agents.
[00:30] (30.56s)
And these agents are called droids. As
[00:32] (32.72s)
you can see here, the droids work
[00:34] (34.24s)
together to diagnose issues, apply
[00:36] (36.32s)
fixes, and eventually ship your
[00:38] (38.24s)
software. It also features native
[00:40] (40.08s)
integrations with tools like Notion,
[00:42] (42.40s)
Jira, and Linear, which makes it feel
[00:44] (44.40s)
like a real developer environment that
[00:46] (46.48s)
thinks and codes the way actual teams
[00:48] (48.56s)
do. In this video, we're going to
[00:50] (50.32s)
explore the platform in depth, and I'll
[00:52] (52.16s)
show you whether it lives up to the hype
[00:54] (54.00s)
and if its team-like modular approach to
[00:56] (56.40s)
building real software actually works.
[00:58] (58.88s)
So, what are these droids? They are
[01:00] (60.96s)
essentially small agents that each
[01:02] (62.80s)
specialize in just one specific task.
[01:05] (65.12s)
They work independently, transfer data
[01:07] (67.36s)
between one another, and carry out real
[01:09] (69.60s)
tasks for you. If you scroll down and
[01:11] (71.92s)
click on view all droids, you'll see
[01:14] (74.00s)
that there are currently five droids
[01:15] (75.92s)
available. I'll walk you through them in
[01:17] (77.60s)
a moment, but when you first start with
[01:19] (79.44s)
the demo, you're introduced to a
[01:21] (81.20s)
tutorial droid that guides you through
[01:23] (83.20s)
the entire process and shows you exactly
[01:25] (85.36s)
what to do. After that, there's the code
[01:27] (87.36s)
droid, which is responsible for writing
[01:29] (89.36s)
code. Then comes the product droid,
[01:31] (91.20s)
which doesn't just help with coding, but
[01:33] (93.04s)
also focuses on delivering a solid
[01:35] (95.04s)
product by managing things from a
[01:36] (96.88s)
product perspective. There's also the
[01:38] (98.56s)
reliability droid. If you explore its
[01:40] (100.64s)
functions, you'll see that it works on
[01:42] (102.32s)
improving the overall stability and
[01:44] (104.32s)
security of your application. And
[01:46] (106.00s)
finally, there's the knowledge droid.
[01:47] (107.92s)
This one documents your codebase, offers
[01:50] (110.08s)
technical explanations, and handles any
[01:52] (112.32s)
external documentation you might need
[01:54] (114.24s)
while working on your project. Right
[01:56] (116.32s)
now, I'm in the factory tutorial, and
[01:58] (118.08s)
the tutorial droid is guiding me through
[02:00] (120.08s)
the steps. They've asked us to connect
[02:01] (121.84s)
to something in order to begin coding.
[02:03] (123.76s)
At this point, I can choose to connect
[02:05] (125.84s)
to a remote machine, a remote workspace,
[02:08] (128.40s)
or even my own local machine. For that,
[02:10] (130.72s)
I'm provided with a code, which I'll go
[02:12] (132.72s)
ahead and copy. Factory includes an app
[02:15] (135.04s)
that allows it to run commands locally
[02:17] (137.12s)
on your system. The app is called
[02:18] (138.96s)
Factory Bridge. This bridge application
[02:21] (141.04s)
is where you paste the code you just
[02:22] (142.88s)
copied. Once you enter the code, the app
[02:24] (144.96s)
begins the connection process. As soon
[02:26] (146.96s)
as the connection is successful,
[02:28] (148.64s)
everything is ready to go. So, we can
[02:30] (150.48s)
close the app and proceed. They've also
[02:32] (152.56s)
shown us a checklist that displays all
[02:34] (154.72s)
the commands factory can execute on our
[02:36] (156.88s)
local system. This checklist allows you
[02:38] (158.88s)
to select which commands should be
[02:40] (160.48s)
autoexecuted, giving you precise control
[02:42] (162.80s)
over what actions are permitted.
[02:44] (164.56s)
However, since everything is now fully
[02:46] (166.40s)
set up, we can go ahead and officially
[02:48] (168.56s)
begin. After we confirm that the setup
[02:50] (170.80s)
is complete, it tells us we're going to
[02:52] (172.64s)
build an app together using Tori, which
[02:54] (174.96s)
is a framework that uses Rust and
[02:56] (176.96s)
TypeScript. It also mentions that
[02:58] (178.96s)
completing the tutorial will reward us
[03:00] (180.88s)
with the standard tokens. It then checks
[03:03] (183.04s)
whether Rust is installed on the system.
[03:05] (185.12s)
Since it detects Rust, it proceeds to
[03:07] (187.20s)
clone a tutorial repository from its own
[03:09] (189.52s)
source, which appears to contain a
[03:11] (191.28s)
preconfigured template for building the
[03:13] (193.36s)
application. After that, it begins
[03:15] (195.28s)
installing dependencies and setting up
[03:17] (197.12s)
the environment. Another detail worth
[03:18] (198.96s)
pointing out is how it handles command
[03:21] (201.12s)
execution. Before running any command,
[03:23] (203.20s)
it displays the potential risks
[03:24] (204.96s)
involved, giving us the option to either
[03:26] (206.96s)
accept or reject them. This is where the
[03:29] (209.16s)
autoaccepts come into play. If we choose
[03:31] (211.52s)
to allow all commands to run
[03:33] (213.20s)
automatically, it stops prompting us for
[03:35] (215.36s)
confirmation and simply executes the
[03:37] (217.36s)
tasks. In this case, we'll go ahead and
[03:39] (219.20s)
let it proceed. It ran the app and now
[03:41] (221.60s)
we can see that everything is up and
[03:43] (223.36s)
running and functioning properly. At the
[03:45] (225.28s)
moment, it's just using a starter
[03:47] (227.12s)
template, so there isn't much visible
[03:48] (228.88s)
yet. What stands out though is that this
[03:50] (230.96s)
is not a web app. It is actually
[03:52] (232.56s)
building a native desktop application.
[03:54] (234.64s)
I'm not sure what it is going to ask us
[03:56] (236.56s)
to do next. It might prompt us to
[03:58] (238.48s)
customize something, but we'll find out
[04:00] (240.40s)
soon. Up to this point, the capabilities
[04:02] (242.64s)
are genuinely impressive. It read the
[04:04] (244.88s)
TypeScript file located in our local
[04:07] (247.12s)
directory and identified that the main
[04:09] (249.20s)
application structure was inside the
[04:11] (251.48s)
app.tsx file. After fetching the file,
[04:14] (254.32s)
it opened a new window where code
[04:16] (256.16s)
execution began and this part is likely
[04:18] (258.40s)
being handled by the coding agent. At
[04:20] (260.40s)
the moment, it is implementing a simple
[04:22] (262.32s)
counterfeature to make the application
[04:24] (264.16s)
more interactive. While the feature
[04:25] (265.76s)
itself is basic, the overall workflow
[04:28] (268.00s)
appears to be smooth and well
[04:29] (269.52s)
structured. If we head back into the
[04:31] (271.44s)
app, we can see that a counter demo has
[04:33] (273.36s)
been implemented. This was added to
[04:34] (274.96s)
demonstrate direct state management and
[04:36] (276.88s)
it's clearly functioning as intended. We
[04:38] (278.96s)
can increment the counter as needed and
[04:40] (280.72s)
it behaves exactly as expected. At this
[04:43] (283.12s)
point, it's time to start customizing
[04:45] (285.12s)
the application based on our own
[04:46] (286.88s)
preferences. So, let's move into that
[04:48] (288.72s)
next. They automatically provided us
[04:51] (291.04s)
with options for what we'd like to build
[04:53] (293.12s)
next. The message explains that we can
[04:55] (295.12s)
now begin creating something genuinely
[04:57] (297.36s)
useful, something more substantial as
[04:59] (299.52s)
they describe it. The available options
[05:01] (301.44s)
include an LLM chat application, a code
[05:03] (303.92s)
review tool, and a meeting notes
[05:05] (305.60s)
summarizer. What stands out about these
[05:07] (307.60s)
options is that they aren't just basic
[05:09] (309.60s)
apps like to-do lists or manual
[05:11] (311.60s)
schedulers, which are common with most
[05:13] (313.44s)
AI or SAS builders. These are actual
[05:15] (315.84s)
applications that involve external API
[05:18] (318.16s)
integrations. For instance, the LLM chat
[05:20] (320.72s)
application would require an open AI API
[05:23] (323.28s)
key and the other tools also depend on
[05:25] (325.52s)
third party APIs. This is where the
[05:27] (327.60s)
Droid ecosystem really starts to shine.
[05:30] (330.00s)
Most likely, the knowledge droid will
[05:32] (332.00s)
play a role in gathering information
[05:33] (333.76s)
about the APIs, helping us integrate
[05:36] (336.00s)
them, and ultimately assisting in
[05:37] (337.76s)
building something genuinely valuable.
[05:39] (339.76s)
In this case, we're looking at creating
[05:41] (341.44s)
a real desktop application, which is
[05:43] (343.36s)
quite impressive. To proceed, we'll go
[05:45] (345.20s)
ahead and build the LLM chat
[05:46] (346.88s)
application. I'm going to copy the
[05:48] (348.72s)
option and paste it into the prompt box
[05:50] (350.80s)
and we'll see how it goes from here. It
[05:53] (353.04s)
built the application and now it is
[05:54] (354.96s)
instructing us to go ahead and get our
[05:56] (356.72s)
API key from OpenAI. After obtaining the
[05:59] (359.28s)
key, we simply need to click the
[06:01] (361.04s)
settings button inside the app, paste
[06:02] (362.88s)
the API key and begin chatting. Before
[06:05] (365.20s)
continuing with the app, I want to show
[06:06] (366.88s)
you the files that were modified. The
[06:08] (368.80s)
preview appeared right beside them and I
[06:10] (370.80s)
could see the files updating in real
[06:12] (372.56s)
time. This is the app that has now been
[06:14] (374.48s)
built. And as you can see, we just need
[06:16] (376.40s)
to go into the settings and paste our
[06:18] (378.56s)
OpenAI API key. Along with that, the
[06:21] (381.04s)
settings panel allows us to select
[06:22] (382.96s)
different models, adjust the
[06:24] (384.56s)
temperature, set the maximum tokens for
[06:26] (386.72s)
the model, and even update the system
[06:28] (388.96s)
prompt. Since the app operates through
[06:30] (390.96s)
API access to OpenAI, it is great to see
[06:33] (393.92s)
that it takes full advantage of these
[06:35] (395.84s)
configurable options. I will now paste
[06:37] (397.92s)
in my API key. After entering it, the
[06:40] (400.48s)
system ran a test and confirmed that the
[06:42] (402.64s)
key is valid. We can save the settings
[06:44] (404.72s)
and try it out. I am going to tweet
[06:46] (406.80s)
something, but it looks like there was
[06:48] (408.48s)
no reply. I will try once more. At this
[06:51] (411.04s)
point, it seems like the response has
[06:53] (413.12s)
gone completely off topic. There might
[06:55] (415.20s)
be an issue with the system prompt. So,
[06:57] (417.12s)
I will attempt one more time. It is
[06:58] (418.96s)
still responding with something about a
[07:00] (420.80s)
song by John Legend and I have no idea
[07:03] (423.04s)
why. I will check the system prompt and
[07:05] (425.20s)
it appears that nothing has changed
[07:06] (426.72s)
there. there might be an issue with the
[07:08] (428.40s)
application itself. So I will try to fix
[07:10] (430.56s)
it using factory. It finally fixed the
[07:13] (433.04s)
issue or more accurately it debugged it.
[07:15] (435.44s)
I switched to Gemini 2.5 Pro and began
[07:18] (438.32s)
the debugging process and it turns out
[07:20] (440.40s)
the problem was not with the app itself.
[07:22] (442.48s)
The actual issue although I am not
[07:24] (444.32s)
entirely certain seemed to be related to
[07:26] (446.48s)
the model I had selected earlier which
[07:28] (448.64s)
was GPT4. As soon as I switched to a
[07:31] (451.28s)
different model and after trying a few
[07:33] (453.28s)
others as well the issue completely
[07:35] (455.20s)
disappeared. It only appeared when I was
[07:37] (457.20s)
using that specific model. Let me show
[07:39] (459.12s)
you again. It is working properly now.
[07:41] (461.28s)
And you can see that the chat
[07:42] (462.64s)
application is responding as expected.
[07:44] (464.96s)
It might have been a temporary issue
[07:46] (466.56s)
with OpenAI's API, but it was returning
[07:49] (469.12s)
completely random answers regardless of
[07:51] (471.36s)
the prompt. Now that everything is set
[07:52] (472.96s)
up correctly, the chat app is
[07:54] (474.64s)
functioning the way it should. This was
[07:56] (476.48s)
just a small demo, but I am planning to
[07:58] (478.48s)
make more videos on this. Hopefully, the
[08:00] (480.40s)
right people see this video and consider
[08:02] (482.48s)
sponsoring the next one. I genuinely
[08:04] (484.32s)
enjoyed using this tool. The way it
[08:06] (486.32s)
breaks everything down and follows a
[08:08] (488.32s)
structured workflow makes it feel like
[08:10] (490.32s)
something that could genuinely transform
[08:12] (492.40s)
how software is going to be built in the
[08:14] (494.40s)
future. That brings us to the end of
[08:16] (496.16s)
this video. If you'd like to support the
[08:17] (497.92s)
channel and help us keep making
[08:19] (499.28s)
tutorials like this, you can do so by
[08:21] (501.20s)
using the super thanks button below. As
[08:23] (503.36s)
always, thank you for watching and I'll
[08:25] (505.12s)
see you in the next one.