Getting Started
Prerequisites
- A Rust toolchain
- An API key for the cloud model provider your bundle uses
- On Linux,
bubblewrap(bwrap) inPATHif you want restricted sandbox execution
If you are developing on macOS or Windows, confined bundle sandboxes are not available yet. Use
--dangerous-sandbox-mode for local development or run Odyssey inside a Linux container.
Install Odyssey
Install the CLI with the bootstrap script:
curl -fsSL https://raw.githubusercontent.com/liquidos-ai/odyssey/main/install.sh | bash
The installer downloads the prebuilt release archive for the current platform and installs
odyssey-rs into ~/.local/bin by default. You can also install it directly with Cargo:
cargo install odyssey-rs
odyssey-rs --help
Initialize A Bundle
Create a starter bundle project:
odyssey-rs init ./hello-world
The template creates a small bundle project:
odyssey.bundle.json5agent.yamlREADME.mdskills/resources/
The starter template is intentionally usable out of the box. It currently:
- uses the
reactexecutor - uses the
sliding_windowmemory provider - sets the default model in
agent.yamltoopenai / gpt-4.1-mini - lists all builtin tools explicitly in
manifest.tools - starts with
sandbox.mode: "read_only" - enables bundle-command network access with
sandbox.permissions.network: ["*"] - uses
sandbox.system_tools_mode: "standard"
That is a convenient development starting point, not a production-hardening template. Tighten the bundle policy before you treat a bundle as trusted automation.
Build And Install
Build a project and install it into the local bundle store:
odyssey-rs build ./hello-world
Without --output, the CLI installs into the runtime cache under:
~/.odyssey/bundles/installs/local/<bundle-id>/<version>
Build an OCI-style bundle layout into a custom output directory instead:
odyssey-rs build ./hello-world --output ./dist
Bundle references accept a few useful forms:
hello-worldorhello-world@latestfor the latest installed local bundlelocal/hello-world:0.1.0for an explicit namespace and version./distfor a built bundle layout directory
Run A Prompt
run is a one-shot command. It creates a fresh session, sends one prompt, prints the final
assistant response, and exits.
export OPENAI_API_KEY="your-key"
odyssey-rs run hello-world@latest --prompt "What can you do?"
On macOS, Windows, or whenever you intentionally want host execution for local debugging:
odyssey-rs run hello-world@latest --prompt "What can you do?" --dangerous-sandbox-mode
Inspect And List
Inspect installed bundle metadata:
odyssey-rs inspect hello-world@latest
List installed bundles and persisted sessions:
odyssey-rs bundles
odyssey-rs sessions
Use The TUI
The TUI uses the same local runtime as the CLI:
odyssey-rs tui --bundle hello-world@latest
Inside the TUI:
- plain text submits a normal chat turn
- slash commands manage bundle and session workflow
- lines starting with
!run a direct operator command inside the current session sandbox, such as!ls -la
Direct operator commands are not stored as normal session turns. They are an operator workflow for inspection and debugging.
Start The HTTP Runtime
Run the Axum server on the default bind address:
odyssey-rs serve
Or choose a custom bind address:
odyssey-rs serve --bind 127.0.0.1:8472
The HTTP server wraps the same runtime type that the CLI and TUI use locally.
Create a session over HTTP:
curl -s -X POST http://127.0.0.1:8472/sessions \
-H 'content-type: application/json' \
-d '{"bundle_ref":"hello-world@latest"}'
Run a turn synchronously against an existing session:
curl -s -X POST http://127.0.0.1:8472/sessions/<session-id>/run-sync \
-H 'content-type: application/json' \
-d '{
"input": {
"prompt": "Summarize yourself in one paragraph",
"submission_id": "11111111-1111-1111-1111-111111111111",
"completed": false
}
}'
The server accepts the protocol Task shape in input. The CLI and TUI build that structure for
you, so you only need to care about it when calling HTTP directly.
The CLI can also target a running server with --remote for the commands that support remote
execution:
odyssey-rs --remote http://127.0.0.1:8472 bundles
odyssey-rs --remote http://127.0.0.1:8472 run hello-world@latest --prompt "Summarize yourself"
What To Read Next
- Bundle Format to understand the manifest and agent spec
- Sandbox and Tools to lock down tools, mounts, exec policy, and approvals
- CLI and Server for the full command and HTTP reference
- Runtime Architecture for the internal model behind sessions, cells, and events