add remote access via TCP: Containerfile, mount subcommand, docs
- Containerfile: multi-stage podman build for running olliesrv as a remote server (port 9564, no FUSE needed on server side) - olliesrv mount <address> [mountpoint]: mounts a remote olliesrv namespace locally via 9pfuse over TCP - olliesrv start -tcp <addr>: adds TCP listener alongside Unix socket - README: document remote access and container usage - doc/IDEAS.md: remove Network & Remote Access (implemented) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
28150207db
commit
e9f10eeb92
2
9p
2
9p
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3b5f494aefe76c52a21f87b51ee043e4e4d10a3c
|
Subproject commit f17774163cbfd518c9919fb9a455a601a6648aa7
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
FROM docker.io/library/golang:latest AS builder
|
||||||
|
WORKDIR /src
|
||||||
|
COPY 9p/ 9p/
|
||||||
|
COPY core/ core/
|
||||||
|
WORKDIR /src/9p
|
||||||
|
RUN go build -o /olliesrv .
|
||||||
|
|
||||||
|
FROM docker.io/library/debian:bookworm-slim
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
bash \
|
||||||
|
python3 \
|
||||||
|
ripgrep \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY --from=builder /olliesrv /usr/local/bin/olliesrv
|
||||||
|
COPY tools/ /root/.config/ollie/tools/
|
||||||
|
COPY agents/ /root/.config/ollie/agents/
|
||||||
|
COPY prompts/ /root/.config/ollie/prompts/
|
||||||
|
|
||||||
|
RUN chmod +x /root/.config/ollie/tools/*
|
||||||
|
|
||||||
|
ENV HOME=/root
|
||||||
|
ENV NAMESPACE=/tmp/ns
|
||||||
|
RUN mkdir -p /tmp/ns
|
||||||
|
|
||||||
|
EXPOSE 9564
|
||||||
|
CMD ["olliesrv", "fgstart", "-tcp", ":9564"]
|
||||||
36
README.md
36
README.md
|
|
@ -69,6 +69,42 @@ OLLIE_MEMORY_PATH=~/.config/ollie/memory # directory for memory files (ollie/m)
|
||||||
|
|
||||||
Shell environment variables take precedence over the env file.
|
Shell environment variables take precedence over the env file.
|
||||||
|
|
||||||
|
## Remote Access
|
||||||
|
|
||||||
|
Because `olliesrv` speaks 9P over TCP, a remote instance can be mounted into the local namespace using `9pfuse`. This means agent sessions, tools, and all other filesystem state on a remote host are accessible as ordinary files — no special client needed.
|
||||||
|
|
||||||
|
### Start a remote server
|
||||||
|
|
||||||
|
On the remote host (or in a container):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
olliesrv start -tcp :9564
|
||||||
|
```
|
||||||
|
|
||||||
|
### Mount the remote namespace locally
|
||||||
|
|
||||||
|
```sh
|
||||||
|
olliesrv mount remotehost:9564 ~/mnt/remotehost
|
||||||
|
ls ~/mnt/remotehost # s/, t/, b/, ...
|
||||||
|
```
|
||||||
|
|
||||||
|
Sessions created under `~/mnt/remotehost/s/` run on the remote host, so tool calls execute close to the remote filesystem rather than over the wire.
|
||||||
|
|
||||||
|
### Container
|
||||||
|
|
||||||
|
A `Containerfile` is included for running a self-contained remote server:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
podman build --network=host -t olliesrv .
|
||||||
|
podman run --network=host -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY olliesrv
|
||||||
|
```
|
||||||
|
|
||||||
|
Then mount locally:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
olliesrv mount localhost:9564 ~/mnt/container-ollie
|
||||||
|
```
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
Update all submodules to latest:
|
Update all submodules to latest:
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,6 @@
|
||||||
|
|
||||||
**Lightweight TUI alternatives** — `watch cat state` as a status bar, `tail -f chat` in one pane, prompt submission in another. Compose a working interface entirely from standard tools.
|
**Lightweight TUI alternatives** — `watch cat state` as a status bar, `tail -f chat` in one pane, prompt submission in another. Compose a working interface entirely from standard tools.
|
||||||
|
|
||||||
### Network & Remote Access
|
|
||||||
|
|
||||||
**Remote access** — 9P is a network protocol. Export the namespace over the network and access agent sessions from another machine using the same file interface, with no additional daemon or API layer.
|
|
||||||
|
|
||||||
### Multi-Agent Workflows
|
### Multi-Agent Workflows
|
||||||
|
|
||||||
Two distinct patterns apply depending on whether work is delegated to ephemeral agents or distributed across persistent concurrent sessions.
|
Two distinct patterns apply depending on whether work is delegated to ephemeral agents or distributed across persistent concurrent sessions.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue