Skip to content

Commit bdb5419

Browse files
authored
Merge pull request #8 from ROBOTIS-GIT/feature-add-update-feature
update 0.2.0
2 parents 8142895 + 616f96a commit bdb5419

69 files changed

Lines changed: 4704 additions & 2450 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.rst‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
Changelog for package cyclo_manager
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
0.2.0 (2026-06-23)
6+
------------------
7+
* Added a dashboard for host status, Docker controls, logs, bashrc editing, and repository updates.
8+
* Added ``cyclo_host_agent`` for host-side git repository updates and ``cyclo_manager`` package updates.
9+
* Added repository update workflow with branch validation, local-change handling, and container stop/start steps.
10+
* Added ``cyclo_manager`` update notification and host-agent-backed update flow from the UI.
11+
* Added a dedicated multi-tab web terminal with persistent ``docker exec`` sessions.
12+
* Moved ROS 2 topics to global ``/ros2`` API and ``/topics`` UI routes.
13+
* Changed configuration to use ``robot_container`` and ``sockets``.
14+
* Updated CLI, packaged Docker Compose files, and images for the new host-agent based workflow.
15+
* Removed old Docker/home pages and legacy in-container update/version endpoints.
16+
* Contributors: Hyungyu Kim
17+
518
0.1.1 (2026-05-18)
619
------------------
720
* Added terminal feature in docker page.

‎README.md‎

Lines changed: 124 additions & 110 deletions
Large diffs are not rendered by default.

‎config.yml‎

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
# cyclo_manager Configuration
2-
# This file defines the containers that cyclo_manager can control.
3-
#
4-
# Services are discovered dynamically from each agent - no need to list them here.
5-
# The agent (running in each container) is the source of truth for available services.
6-
#
72

8-
containers:
9-
ai_worker:
10-
socket_path: "/agents/ai_worker/s6_agent.sock"
11-
physical_ai_server:
12-
socket_path: "/agents/physical_ai_server/s6_agent.sock"
3+
robot_container: ai_worker
4+
5+
sockets:
6+
ai_worker: "/agents/ai_worker/s6_agent.sock"
7+
physical_ai_server: "/agents/physical_ai_server/s6_agent.sock"
8+
host_agent: "/agents/host/host_agent.sock"

‎cyclo_manager/Dockerfile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ RUN apt-get update && \
1010
ros-jazzy-rmw-zenoh-cpp \
1111
ros-jazzy-control-msgs \
1212
docker.io \
13-
tmux \
1413
&& rm -rf /var/lib/apt/lists/*
1514

1615
# Create venv and install pip dependencies
@@ -25,6 +24,7 @@ COPY cyclo_manager_cli/cyclo_manager_cli/config/config.yml ./config.yml
2524

2625
RUN echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
2726
RUN echo 'export ROS_DOMAIN_ID=30' >> ~/.bashrc
27+
RUN echo 'export RMW_IMPLEMENTATION=rmw_zenoh_cpp' >> ~/.bashrc
2828

2929
# Expose API port
3030
EXPOSE 8081

‎cyclo_manager/Dockerfile.dev‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ RUN apt-get update && \
1010
ros-jazzy-rmw-zenoh-cpp \
1111
ros-jazzy-control-msgs \
1212
docker.io \
13-
tmux \
1413
&& rm -rf /var/lib/apt/lists/*
1514

1615
# Create venv and install pip dependencies

‎cyclo_manager/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@
2323
running s6-overlay agents via Unix Domain Sockets.
2424
"""
2525

26-
__version__ = '0.1.1'
26+
__version__ = '0.2.0'

‎cyclo_manager/agent/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@
2323
running inside a container via Unix Domain Socket.
2424
"""
2525

26-
__version__ = '0.1.1'
26+
__version__ = '0.2.0'

‎cyclo_manager/agent/s6_agent.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
This agent provides endpoints to list, check status, and control
4141
s6-overlay services running in the container.
4242
""",
43-
version='0.1.1',
43+
version='0.2.0',
4444
docs_url=None,
4545
redoc_url=None,
4646
openapi_url=None,
@@ -59,7 +59,7 @@ async def http_exception_handler(request, exc: HTTPException):
5959
@app.get('/', tags=['root'])
6060
async def root():
6161
"""Root endpoint."""
62-
return {'message': 's6 Agent API', 'version': '0.1.1'}
62+
return {'message': 's6 Agent API', 'version': '0.2.0'}
6363

6464
# Include routers
6565
app.include_router(services.router)

‎cyclo_manager/agent_client.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,8 @@ class AgentClientPool:
400400
def __init__(self, config: 'SystemConfig') -> None:
401401
"""Initialize client pool from configuration."""
402402
self._clients: dict[str, AgentClient] = {}
403-
for container_name, container_config in config.containers.items():
404-
self._clients[container_name] = AgentClient(container_config.socket_path)
403+
for container_name, socket_path in config.container_sockets.items():
404+
self._clients[container_name] = AgentClient(socket_path)
405405

406406
def get_client(self, container_name: str) -> Optional[AgentClient]:
407407
"""

‎cyclo_manager/api.py‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,12 @@
2626
container,
2727
containers,
2828
docker,
29+
host,
2930
root,
3031
ros2,
3132
services,
33+
system,
34+
terminal,
3235
version,
3336
websocket,
3437
)
@@ -69,7 +72,7 @@
6972
* **ReDoc**: Available at `/redoc` (alternative documentation)
7073
* **OpenAPI Schema**: Available at `/openapi.json`
7174
""",
72-
version='0.1.1',
75+
version='0.2.0',
7376
lifespan=lifespan,
7477
docs_url='/docs',
7578
redoc_url='/redoc',
@@ -114,6 +117,12 @@
114117
'cyclo_manager version check (PyPI) and update (pip + cyclo_manager up).'
115118
),
116119
},
120+
{
121+
'name': 'host',
122+
'description': (
123+
'Host agent operations: ROS2 workspace repo management (clone, pull, delete).'
124+
),
125+
},
117126
],
118127
)
119128

@@ -129,13 +138,16 @@
129138

130139
# Include routers
131140
app.include_router(root.router)
141+
app.include_router(system.router)
132142
app.include_router(containers.router)
133143
app.include_router(container.router)
134144
app.include_router(services.router)
135145
app.include_router(version.router)
136146
app.include_router(docker.router)
147+
app.include_router(terminal.router)
137148
app.include_router(ros2.router)
138149
app.include_router(websocket.router)
150+
app.include_router(host.router)
139151

140152

141153
@app.exception_handler(HTTPException)

0 commit comments

Comments
 (0)