WEBVTT

00:00:00.000 --> 00:00:01.633
When you first open Hydra, the

00:00:01.633 --> 00:00:03.000
sidebar can make it look like a

00:00:03.000 --> 00:00:04.533
dashboard for other tools.

00:00:04.900 --> 00:00:06.533
But this is a real terminal.

00:00:07.200 --> 00:00:08.800
Here I am running an ordinary Python

00:00:08.800 --> 00:00:10.400
command, just as I would in my

00:00:10.400 --> 00:00:11.400
usual terminal.

00:00:11.800 --> 00:00:13.300
Hydra brings together a Rust

00:00:13.300 --> 00:00:15.033
terminal, tmux-style session

00:00:15.033 --> 00:00:16.767
management, and remote access.

00:00:17.433 --> 00:00:18.933
The sidebar is React.

00:00:19.400 --> 00:00:20.367
The terminal uses a

00:00:20.367 --> 00:00:21.933
native GPU renderer.

00:00:22.200 --> 00:00:23.800
In this guide, we will set up one

00:00:23.800 --> 00:00:25.433
local project from the beginning.

00:00:25.800 --> 00:00:26.700
I have already installed

00:00:26.700 --> 00:00:28.233
Hydra and OpenCode.

00:00:28.633 --> 00:00:29.767
Your agent's installation and

00:00:29.767 --> 00:00:30.900
sign-in are separate.

00:00:31.300 --> 00:00:32.533
Start with a coding agent that

00:00:32.533 --> 00:00:33.867
already works on your machine.

00:00:34.267 --> 00:00:35.733
Let's create a workspace for a small

00:00:35.733 --> 00:00:36.733
research task.

00:00:37.033 --> 00:00:38.600
This example uses synthetic sensor

00:00:38.600 --> 00:00:40.633
readings, not private research data.

00:00:41.033 --> 00:00:42.367
Click New project at the bottom

00:00:42.367 --> 00:00:43.167
of the sidebar.

00:00:43.733 --> 00:00:45.500
I will call this Sensor Study.

00:00:46.000 --> 00:00:47.333
Use a name that tells you what the

00:00:47.333 --> 00:00:49.033
work is, rather than which model

00:00:49.033 --> 00:00:50.533
happens to be helping with it.

00:00:50.767 --> 00:00:51.900
Next, enter the folder

00:00:51.900 --> 00:00:53.167
containing your project.

00:00:53.600 --> 00:00:55.067
This is an existing folder with a

00:00:55.067 --> 00:00:56.833
Python script, a dataset,

00:00:57.067 --> 00:00:57.933
and two tests.

00:00:58.433 --> 00:00:59.800
Earlier, I discussed this dataset

00:00:59.800 --> 00:01:01.733
with OpenCode outside Hydra.

00:01:02.133 --> 00:01:03.600
I want to pick up that conversation,

00:01:03.800 --> 00:01:04.767
not start over.

00:01:04.967 --> 00:01:07.267
Choose OpenCode, and Hydra finds its

00:01:07.267 --> 00:01:08.133
previous conversations

00:01:08.133 --> 00:01:09.200
for this folder.

00:01:09.633 --> 00:01:11.100
Here is Sensor Study planning.

00:01:11.467 --> 00:01:13.133
These are real saved conversations,

00:01:13.600 --> 00:01:15.200
including ones that began before I

00:01:15.200 --> 00:01:16.700
created this Hydra project.

00:01:17.000 --> 00:01:18.467
I select the planning conversation.

00:01:19.133 --> 00:01:20.200
Notice that the launch mode

00:01:20.200 --> 00:01:21.267
changes to resume.

00:01:21.833 --> 00:01:22.800
We are opening the selected

00:01:22.800 --> 00:01:25.033
conversation, not merely launching a

00:01:25.033 --> 00:01:26.600
new agent in the same folder.

00:01:27.000 --> 00:01:27.933
If you want a clean start

00:01:27.933 --> 00:01:29.533
instead, choose fresh.

00:01:30.033 --> 00:01:31.233
You can review the launch choice

00:01:31.233 --> 00:01:32.733
before creating the project.

00:01:33.100 --> 00:01:34.500
I am leaving automatic permission

00:01:34.500 --> 00:01:36.233
bypass off for this example.

00:01:36.700 --> 00:01:37.800
I choose a colour to make the

00:01:37.800 --> 00:01:39.667
project easy to recognise,

00:01:39.667 --> 00:01:40.667
then click Create.

00:01:41.300 --> 00:01:42.633
Hydra adds the project to the

00:01:42.633 --> 00:01:43.867
sidebar and starts the

00:01:43.867 --> 00:01:44.867
selected session.

00:01:45.200 --> 00:01:46.600
Here is the conversation we started

00:01:46.600 --> 00:01:48.567
outside Hydra, including its

00:01:48.567 --> 00:01:50.033
original question and answer.

00:01:50.500 --> 00:01:51.533
We were checking how to handle

00:01:51.533 --> 00:01:53.000
missing readings before comparing

00:01:53.000 --> 00:01:53.867
the two sensors.

00:01:54.400 --> 00:01:55.767
Let's continue that discussion.

00:01:56.400 --> 00:01:57.800
I ask why missing readings should

00:01:57.800 --> 00:01:59.000
not count as zero.

00:01:59.467 --> 00:02:00.633
I am keeping this first task

00:02:00.633 --> 00:02:02.433
read-only so we can learn the

00:02:02.433 --> 00:02:03.900
workspace without having an agent

00:02:03.900 --> 00:02:05.067
change the project.

00:02:05.467 --> 00:02:06.533
The response stays in the

00:02:06.533 --> 00:02:07.333
same conversation.

00:02:07.900 --> 00:02:09.533
Bringing existing work into Hydra

00:02:09.533 --> 00:02:11.233
does not mean giving up the context

00:02:11.233 --> 00:02:12.467
you have already built.

00:02:12.667 --> 00:02:13.667
There are three levels to

00:02:13.667 --> 00:02:14.467
the workspace.

00:02:14.933 --> 00:02:16.600
The project groups related work.

00:02:17.033 --> 00:02:18.733
A window holds a terminal layout.

00:02:19.167 --> 00:02:20.833
Each pane is an individual terminal,

00:02:20.833 --> 00:02:22.700
running an agent or a shell.

00:02:23.233 --> 00:02:24.700
Using the window menu, I rename

00:02:24.700 --> 00:02:25.833
this one Analysis.

00:02:26.600 --> 00:02:28.200
The same name appears in its tab at

00:02:28.200 --> 00:02:29.200
the top of the terminal.

00:02:29.367 --> 00:02:30.633
Now I want a separate place to

00:02:30.633 --> 00:02:31.467
check the work.

00:02:32.100 --> 00:02:33.367
Click the window button and call

00:02:33.367 --> 00:02:34.833
this one Run and results.

00:02:35.900 --> 00:02:37.333
Keeping discussion and execution

00:02:37.333 --> 00:02:38.400
separate makes it

00:02:38.400 --> 00:02:39.700
easier to find both.

00:02:40.067 --> 00:02:41.467
For this window, choose Terminal

00:02:41.467 --> 00:02:42.367
instead of a coding

00:02:42.367 --> 00:02:43.800
agent, then Create.

00:02:44.667 --> 00:02:46.000
A Hydra workspace can contain

00:02:46.000 --> 00:02:47.533
ordinary shells as well as

00:02:47.533 --> 00:02:48.333
agent sessions.

00:02:48.867 --> 00:02:49.833
You do not need an agent

00:02:49.833 --> 00:02:50.933
for every task.

00:02:51.433 --> 00:02:53.200
In this build, the new shell starts

00:02:53.200 --> 00:02:54.300
in a scratch folder.

00:02:54.667 --> 00:02:56.333
I explicitly change to our project

00:02:56.333 --> 00:02:58.567
folder and check it with pwd before

00:02:58.567 --> 00:02:59.600
running anything.

00:02:59.933 --> 00:03:00.867
Use the path to your

00:03:00.867 --> 00:03:02.033
own project here.

00:03:02.467 --> 00:03:03.900
Now I run the Python script.

00:03:04.200 --> 00:03:05.300
Each sensor has three

00:03:05.300 --> 00:03:06.200
valid readings.

00:03:06.633 --> 00:03:07.800
The missing entries are excluded,

00:03:07.800 --> 00:03:09.767
just as we discussed with the agent.

00:03:10.067 --> 00:03:11.600
These are the actual results from

00:03:11.600 --> 00:03:13.267
our small example dataset.

00:03:13.467 --> 00:03:15.267
I also run the two unit tests.

00:03:15.600 --> 00:03:16.467
Both pass.

00:03:16.933 --> 00:03:18.867
The agent's explanation is useful,

00:03:19.167 --> 00:03:20.733
but I still check the work myself.

00:03:21.233 --> 00:03:22.700
Click Analysis to return to

00:03:22.700 --> 00:03:23.500
the conversation.

00:03:24.033 --> 00:03:25.433
The results remain in their own

00:03:25.433 --> 00:03:26.467
window, ready when we

00:03:26.467 --> 00:03:27.267
need them again.

00:03:27.267 --> 00:03:29.600
The pane can have its own name too.

00:03:29.933 --> 00:03:32.067
Open its menu and choose Rename,

00:03:32.233 --> 00:03:33.600
just as we did for the window.

00:03:33.967 --> 00:03:35.667
I call this Dataset review.

00:03:36.167 --> 00:03:37.600
Now the project, window, and

00:03:37.600 --> 00:03:38.867
conversation each have

00:03:38.867 --> 00:03:39.800
a useful label.

00:03:40.133 --> 00:03:41.733
This matters more as you add work.

00:03:41.933 --> 00:03:43.200
You can find the task you need

00:03:43.200 --> 00:03:44.867
without opening every terminal to

00:03:44.867 --> 00:03:46.033
remember what it contains.

00:03:46.433 --> 00:03:48.367
Once the work is organised, I can

00:03:48.367 --> 00:03:50.167
hide Hydra's sidebar using the

00:03:50.167 --> 00:03:51.200
arrow at the top.

00:03:51.567 --> 00:03:53.200
Its space goes back to the terminal.

00:03:53.433 --> 00:03:55.367
The panel that OpenCode displays on

00:03:55.367 --> 00:03:56.567
the right belongs to

00:03:56.567 --> 00:03:58.267
OpenCode, not Hydra.

00:03:58.833 --> 00:04:00.200
The window tabs stay visible.

00:04:00.700 --> 00:04:02.567
Click Run and results to check the

00:04:02.567 --> 00:04:04.667
same shell and test output, even

00:04:04.667 --> 00:04:05.933
with the sidebar hidden.

00:04:06.267 --> 00:04:07.867
Then click Analysis to return.

00:04:08.433 --> 00:04:10.067
Switching tabs does not start a

00:04:10.067 --> 00:04:11.133
replacement conversation.

00:04:11.767 --> 00:04:13.067
This is still our planning session,

00:04:13.067 --> 00:04:15.233
with the follow-up we asked earlier.

00:04:15.667 --> 00:04:16.867
I tell the agent that the tests

00:04:16.867 --> 00:04:19.067
passed and ask what to check next.

00:04:19.367 --> 00:04:20.567
This is the everyday loop.

00:04:20.567 --> 00:04:23.400
Discuss the work, run it in a shell,

00:04:23.667 --> 00:04:25.333
inspect the result, and continue

00:04:25.333 --> 00:04:26.133
the conversation.

00:04:26.733 --> 00:04:28.367
When I want the project tree again,

00:04:28.500 --> 00:04:30.067
I click the handle on the left.

00:04:30.367 --> 00:04:31.167
The names and windows

00:04:31.167 --> 00:04:32.167
are still there.

00:04:32.433 --> 00:04:34.467
Use the sidebar to organise, and the

00:04:34.467 --> 00:04:36.067
tabs to move between tasks.

00:04:36.500 --> 00:04:37.800
So far we have used one

00:04:37.800 --> 00:04:38.933
pane per window.

00:04:39.267 --> 00:04:40.333
But Hydra is also a

00:04:40.333 --> 00:04:41.733
terminal multiplexer.

00:04:41.933 --> 00:04:44.033
That applies to ordinary shells, not

00:04:44.033 --> 00:04:45.067
just coding agents.

00:04:45.467 --> 00:04:47.767
In Run and results, I choose Split

00:04:47.767 --> 00:04:49.833
down and keep Terminal selected.

00:04:50.267 --> 00:04:52.067
I leave the working directory set to

00:04:52.067 --> 00:04:53.600
Window folder in this build.

00:04:53.967 --> 00:04:55.867
Click Split, and now there are two

00:04:55.867 --> 00:04:57.900
ordinary shells in the same window.

00:04:58.433 --> 00:05:00.667
Hydra provides this tmux-like layout

00:05:00.667 --> 00:05:02.267
and session management itself.

00:05:02.733 --> 00:05:03.533
You do not need to run

00:05:03.533 --> 00:05:04.767
tmux inside it.

00:05:04.833 --> 00:05:06.033
Let's use the same idea

00:05:06.033 --> 00:05:07.067
for our agents.

00:05:07.767 --> 00:05:09.133
I return to Analysis and

00:05:09.133 --> 00:05:10.900
choose Split right.

00:05:11.433 --> 00:05:12.667
Instead of putting every

00:05:12.667 --> 00:05:14.667
conversation in a different window,

00:05:14.767 --> 00:05:15.767
we can keep related

00:05:15.767 --> 00:05:17.400
work side by side.

00:05:17.667 --> 00:05:20.467
I name the new pane Methods check

00:05:20.467 --> 00:05:23.233
and leave OpenCode selected.

00:05:23.767 --> 00:05:26.000
This time I choose a new session.

00:05:26.400 --> 00:05:28.500
It is a separate conversation, not

00:05:28.500 --> 00:05:29.967
another view of the Dataset

00:05:29.967 --> 00:05:30.933
review conversation.

00:05:31.567 --> 00:05:33.833
I give this agent the summary of our

00:05:33.833 --> 00:05:35.633
synthetic data and ask what we

00:05:35.633 --> 00:05:36.433
should check before

00:05:36.433 --> 00:05:37.733
comparing the sensors.

00:05:38.367 --> 00:05:40.367
Giving each conversation a specific

00:05:40.367 --> 00:05:42.467
job makes the layout useful.

00:05:42.933 --> 00:05:44.967
This one reviews the method, while

00:05:44.967 --> 00:05:46.767
the original conversation keeps the

00:05:46.767 --> 00:05:47.733
dataset discussion.

00:05:48.467 --> 00:05:49.900
I am asking for advice,

00:05:50.033 --> 00:05:51.067
not file changes.

00:05:51.633 --> 00:05:54.167
Next I use Split down and name the

00:05:54.167 --> 00:05:55.700
new pane Test review.

00:05:56.367 --> 00:05:58.700
I keep OpenCode selected and start

00:05:58.700 --> 00:05:59.900
another new session.

00:06:00.233 --> 00:06:02.067
The goal is to separate the test

00:06:02.067 --> 00:06:03.667
discussion from the dataset and

00:06:03.667 --> 00:06:05.500
method reviews, while keeping them

00:06:05.500 --> 00:06:06.667
in one window.

00:06:07.233 --> 00:06:08.967
We now have three OpenCode

00:06:08.967 --> 00:06:11.000
conversations in one window.

00:06:11.333 --> 00:06:13.600
In Test review, I describe our

00:06:13.600 --> 00:06:15.900
existing tests and ask which edge

00:06:15.900 --> 00:06:17.300
cases to check next.

00:06:17.967 --> 00:06:19.467
Our plain shells remain in

00:06:19.467 --> 00:06:20.700
Run and results.

00:06:21.133 --> 00:06:22.367
Here is its answer.

00:06:22.900 --> 00:06:24.167
Each agent keeps its own

00:06:24.167 --> 00:06:26.033
conversation, and I can compare

00:06:26.033 --> 00:06:27.133
their suggestions without

00:06:27.133 --> 00:06:28.167
changing windows.

00:06:28.667 --> 00:06:30.467
The first layout does not have to be

00:06:30.467 --> 00:06:31.433
the final layout.

00:06:31.967 --> 00:06:33.600
I use the upward arrow on Test

00:06:33.600 --> 00:06:35.167
review to swap it with

00:06:35.167 --> 00:06:36.133
Dataset review.

00:06:36.667 --> 00:06:38.400
Their positions change, and each

00:06:38.400 --> 00:06:39.767
keeps its own conversation.

00:06:40.500 --> 00:06:43.167
Now I use Swallow on Dataset review.

00:06:43.700 --> 00:06:45.567
It extends across the bottom row,

00:06:45.700 --> 00:06:47.633
giving that conversation more width.

00:06:48.133 --> 00:06:50.167
The other two panes remain above it.

00:06:50.567 --> 00:06:52.233
I have changed the layout, not

00:06:52.233 --> 00:06:53.567
merged the conversations.

00:06:54.200 --> 00:06:56.200
Suppose I want Test review out of

00:06:56.200 --> 00:06:57.300
the way for a moment.

00:06:57.567 --> 00:06:59.133
I click its close button.

00:06:59.633 --> 00:07:01.500
It leaves the terminal layout, but

00:07:01.500 --> 00:07:03.033
notice that Test review is still

00:07:03.033 --> 00:07:05.567
listed in the sidebar, now dimmed.

00:07:05.767 --> 00:07:08.067
To bring it back, I drag the dimmed

00:07:08.067 --> 00:07:10.067
session name from the sidebar into

00:07:10.067 --> 00:07:11.333
the right side of the terminal

00:07:11.333 --> 00:07:12.733
area and release.

00:07:13.367 --> 00:07:15.167
Test review returns with the same

00:07:15.167 --> 00:07:16.800
conversation and answer.

00:07:17.233 --> 00:07:18.767
I do not start a new agent.

00:07:19.333 --> 00:07:21.367
With three panes, hiding the sidebar

00:07:21.367 --> 00:07:23.167
makes an even bigger difference.

00:07:23.733 --> 00:07:25.400
Click the arrow, and that space goes

00:07:25.400 --> 00:07:26.500
back to the terminal.

00:07:26.867 --> 00:07:28.033
All three conversations

00:07:28.033 --> 00:07:29.000
remain visible.

00:07:29.500 --> 00:07:30.733
The tabs still work.

00:07:31.167 --> 00:07:32.800
Run and results brings back

00:07:32.800 --> 00:07:33.700
our two shells.

00:07:34.167 --> 00:07:36.067
Analysis brings back the three agent

00:07:36.067 --> 00:07:37.767
panes in their arranged positions.

00:07:38.467 --> 00:07:40.800
Each window keeps its own layout, so

00:07:40.800 --> 00:07:42.133
moving between discussion and

00:07:42.133 --> 00:07:43.733
execution is just a click.

00:07:44.133 --> 00:07:45.600
Click the handle on the left to

00:07:45.600 --> 00:07:46.733
bring the sidebar back.

00:07:46.733 --> 00:07:49.567
Organise with the sidebar, rearrange

00:07:49.567 --> 00:07:51.533
panes with the mouse, and hide the

00:07:51.533 --> 00:07:52.567
tree when you want the space

00:07:52.567 --> 00:07:53.467
for your work.

00:07:53.800 --> 00:07:55.833
Start with one project, an existing

00:07:55.833 --> 00:07:57.367
conversation, and a

00:07:57.367 --> 00:07:58.367
shell for checks.

00:07:58.967 --> 00:07:59.933
Add more panes when the

00:07:59.933 --> 00:08:00.867
work needs them.

00:08:01.367 --> 00:08:02.567
You do not have to learn every

00:08:02.567 --> 00:08:04.100
control on the first day.

00:08:04.467 --> 00:08:05.667
You do not need to change your whole

00:08:05.667 --> 00:08:07.233
workflow on the first day.

00:08:07.667 --> 00:08:09.133
Try this loop with your own project,

00:08:09.133 --> 00:08:10.933
and tell us where you get stuck.

