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:
Levi Neely 2026-04-16 23:32:37 +02:00
parent 28150207db
commit e9f10eeb92
4 changed files with 64 additions and 5 deletions

2
9p

@ -1 +1 @@
Subproject commit 3b5f494aefe76c52a21f87b51ee043e4e4d10a3c Subproject commit f17774163cbfd518c9919fb9a455a601a6648aa7

27
Containerfile Normal file
View File

@ -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"]

View File

@ -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:

View File

@ -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.