LifeStack / server.py
Soham Banerjee
deploy: pure lifestack with partitioned wisdom pool
77da5ce
import os
from pathlib import Path
try:
import uvicorn
except ImportError as exc:
root_dir = Path(__file__).resolve().parent
venv_python = root_dir / ".venv" / "bin" / "python"
raise SystemExit(
"uvicorn is not installed for this interpreter.\n"
f"Run the server with: {venv_python} {root_dir / 'server.py'}\n"
"Or activate the virtualenv first: source .venv/bin/activate"
) from exc
try:
from openenv.core import create_app
except ImportError:
# Alternative path for older/flat openenv structures
try:
from openenv.env import create_app
except ImportError:
def create_app(*a, **k):
print("⚠️ create_app not found in openenv. Using fallback.")
return None
from core.lifestack_env import LifeStackEnv, LifeStackAction, LifeStackObservation
def main():
"""
LifeStack OpenEnv Server β€” Standard distribution entry point.
Wraps LifeStackEnv in an HTTP and WebSocket server compatible with EnvClient.
"""
# Use standard environment variables for configuration
host = os.getenv("OPENENV_HOST", "0.0.0.0")
port = int(os.getenv("OPENENV_PORT", "8000"))
max_concurrent = int(os.getenv("OPENENV_MAX_SESSIONS", "4"))
# Create the FastAPI app with the builtin OpenEnv web interface enabled
os.environ["ENABLE_WEB_INTERFACE"] = "true"
app = create_app(
env=LifeStackEnv,
action_cls=LifeStackAction,
observation_cls=LifeStackObservation,
env_name="LifeStack Premium",
max_concurrent_envs=max_concurrent
)
print(f"\n" + "═"*60)
print(f" πŸš€ LifeStack OpenEnv Server is ready!")
print(f" - HTTP Endpoint: http://{host}:{port}")
print(f" - Web Interface: http://{host}:{port}/web")
print(f" - Documentation: http://{host}:{port}/docs")
print("═"*60 + "\n")
uvicorn.run(app, host=host, port=port, log_level="info")
if __name__ == "__main__":
main()