Repository navigation
Releases: compforge/hostel
Releases · compforge/hostel
Release list
Hostel v0.1.39
Snapshot of GitHub main at 7f48512f0885072ce090529af77ac3d9ed4fea11, preserving the current Bed runtime baseline before the planned Bed/Pillow model changes.
Upgrade Notes
- Bed management responses now return the Hostel lifecycle identity in
idand the caller-supplied routing identity inname. Usenamefor request routing and business correlation; request paths andX-Hostel-Bedstill accept that name. See the identity migration guide. - Filesystem declarations use per-Bed
path_mappingsandsync_paths; replace legacy instance-wide projection configuration. The carrier data root is configured with--beds-root/HOSTEL_BEDS_ROOT. - Services reference named Bed port mappings. Discover actual Bed/Host ports from
status.port_mappingsor the Service access response; callers supply the reachable Carrier host instead of consuming a generated endpoint URL. - Room types describe file isolation guarantees. Read component status for actual identity, network, process and resource capabilities; mechanism diagnostics use
tools.
New Features
- OpenSandbox Execd adapters for command execution, persistent sessions, file operations and execution logs, with optional per-Bed authentication.
- Named Bed TCP port mappings with Service ownership and discovery across shared or private networking.
- Optional Executor PID namespaces, with procfs and filesystem views tied to Executor lifecycle.
- CPU and memory pressure signals for Carrier scheduling decisions, including early pressure thresholds.
- A standalone, standard-library-only
protocolGo module supporting Go 1.25 consumers independently of the daemon toolchain.
Bug Fixes
- Commands, sessions and Services share Bed-native data paths and temporary files; file APIs remain usable when process path redirection is unavailable.
- Prepare privileged Bed resources before dropping workload credentials, and preserve the selected isolation contract when Executors are replaced.
- Preserve execution-history and preparation-error boundaries, handle oversized supervisor start requests, and support IPv4 NAT on older Linux kernels.
- Smooth CPU pressure over a ten-second window to reduce transient scheduling noise.
Full Changelog: v0.1.14...v0.1.39
Hostel v0.1.14
This release brings together the Bed runtime and component changes since v0.0.5, including declarative services, process configuration, lifecycle renewal, and capability-aware isolation.
Upgrade Notes
- Update status consumers for
/v1/statusschema version 5. Host observations are split intohost.factandhost.status; managed port allocations are underhost.status.ports, and configuration-source observations are undercomponents.configuration. Bed lifecycle and component status are reported separately. - Review the current Bed creation, service, and component configuration contracts before upgrading older clients. Bed services use caller-provided
ServiceSpecdeclarations; the runtime image supplies their executables and dependencies. - Named configuration sources and absolute
env_filesreferences are intended for a trusted control plane. Source registration is not tenant authorization, and environment injection does not establish filesystem or process isolation.
New Features
- Bed services: optional per-Bed managed processes share the Bed execution environment and lifecycle, with restart policies, readiness checks, HTTP access discovery, optional bearer authentication, and daemon-wide TCP port allocation shared with Amenities.
- Configuration management: ordinary execution and services independently select
env,env_files,env_from, andenv_value_from. Named host directories can supply projected configuration; resolved file values stay out of persisted declarations and status responses. - Lifecycle and execution: a shared Bed model separates persistent Bed identity, replaceable Executors, and individual Executions. Asynchronous initialization waits for data restore and environment preparation. Bed renewal extends retention without creating or waking a Bed.
- Capability-aware isolation: filesystem, identity, and network components compose their actual guarantees into Bed room profiles. Optional network namespaces and policies, scoped Unix users, and PRoot/pathshim process views support different host capabilities while reporting limitations explicitly.
- Storage and integrations: configurable BedFS paths, per-Bed store selection, explicit S3 and restic transfers, Bed-scoped remote MCP access, structured execution events, and OpenTelemetry tracing.
Bug Fixes
- Separate service readiness from process supervision and support readiness checks when network inspection privileges are unavailable.
- Verify service listeners in the Bed network scope and use UUIDv7 transfer instance IDs.
- Harden initialization, cleanup, executor failure handling, and filesystem boundaries; preserve command stdin and heredoc behavior across execution paths.
Full Changelog: v0.0.5...v0.1.14
hostel v0.0.5
Changes
- PR #78 build: add explicit project version
- PR #77 feat: separate bed pressure from hard capacity
- PR #76 feat: add bed restore readiness and affinity signals
- PR #75 feat: model pinned bed capacity and store sync
- PR #74 fix: preserve synced idle admission state
- PR #73 fix: preserve resident beds under carrier pressure
- PR #72 feat: expose bed pressure admission signal
- PR #71 fix: keep exec SSE streams alive
- PR #70 docs: describe hostel as a small kubelet
- PR #69 feat: add carrier resource admission
- PR #68 feat: isolate bed envs and cap active beds
- PR #67 feat: session primitive + evict revoke + bounded operation timeout + merged /v1/beds
- PR #66 feat: share carrier software across beds
- PR #65 fix: keep default bed out of isolated session view
- PR #64 fix: reject deleting the default isolated session
- PR #63 fix: serialize process signals with reaping
- PR #62 feat: add isolated session bed adapter
- PR #61 fix: serialize process signals with reaping
- PR #60 fix: close received rights on protocol errors
- PR #59 fix: preserve bedinit IPC message boundaries
- PR #58 fix: keep health checks independent of bed locks
- PR #57 feat: model bed lifecycle as operation state
- PR #56 feat: expose bed lifecycle observability
- PR #55 fix: protect active beds with exec-aware expiry
- PR #54 feat: add per-bed resource metrics
- PR #53 fix(store): use seekable bodies for S3 PutObject
- PR #52 refactor(store): scope S3 objects directly by bed
- PR #51 fix(store): make S3 addressing style configurable
- PR #50 fix(hostel): preserve exact exec stream bytes
- PR #49 fix(store): exclude bed tmp from S3 snapshots
hostel v0.0.3
Release cut from current main after v0.0.2.
Highlights:
- Add bed-init based process supervision and per-bed process tree cleanup.
- Improve command execution isolation, cwd handling, and workdir creation.
- Add Chromium amenity supervision plus per-bed CDP proxy support.
- Refine bed path modeling and log readability around bed ids.
- Reach suite isolation in non-privileged Kubernetes pods and surface AppArmor facts.
- Move shared helpers to go-stdx and tighten build/check workflow.
hostel v0.0.1
First versioned release.
hostel is a sandbox runtime for AI agents: one process manages many isolated execution units (beds) behind an OpenSandbox-compatible HTTP API.
Highlights
Bed model
- bed = guest unit = one sandbox to the caller (workspace + long-lived shell, state persists across commands); default bed fallback for single-tenant callers
- explicit lifecycle ACTIVE → EVICTING → DORMANT — the snapshot is the durable identity;
--max-bedsbackpressure (429) for upstream schedulers
Data isolation tiers (hostel-metaphor levels, not mechanism names)
dorm(no walls) /room(your data locked, commons shared) /suite(fully private view) /auto= environment ceiling; effective = min(requested, ceiling), over-asks degrade honestly- mechanisms behind the levels: direct · Landlock (
__confinere-exec, zero caps) · per-bed uid (no-Landlock kernels, NNP-hardened) · bwrap (private mount ns) - host facts collected once, surfaced in /healthz; every mechanism proves itself with a boot smoke — declared capability ≠ enforced
Persistence (S3-compatible)
--store auto(default): configure--s3-bucketand beds persist via cas — the workspace is catar-serialized and CDC-chunked (via desync); only chunks new since the previous snapshot upload, an unchanged workspace re-persists with zero uploadstarballlayout as explicit fallback (one tar.gz per bed)- dual-activation conflict detector: persist refuses to overwrite a newer generation (first-writer-wins,
ErrConflict) - luggage: evicted beds leave a local warm copy; same-instance resume skips the download (generation-based freshness), disk bounded by watermark GC;
GET /v1/inventorygives schedulers capacity + per-bed freshness in one call
Amenities
- shared heavyweight facilities sliced by app-native tenancy: Chromium (one browser, per-bed BrowserContext) with full interaction verbs
Image
docker run hub.byted.org/epscprelease/hostel:v0.0.1
Multi-arch (linux/amd64, linux/arm64), bwrap + chromium included; hostel --health as HEALTHCHECK.