gridmind / server /app.py
ShreeshantXD's picture
fix: add server entry point and pyproject scripts for OpenEnv validator
91cc891
"""
GridMind-RL server entry point.
The core simulation runs as a Go binary (main.go) on port 7860.
This module provides the Python entry point expected by OpenEnv spec
and pyproject.toml [project.scripts].
In Docker: the Go binary is started by supervisord.
For local dev: use `go run main.go` directly.
"""
import os
import subprocess
import sys
def main():
"""Start the GridMind-RL Go environment server."""
port = os.getenv("PORT", "7860")
# Look for compiled binary first
binary_paths = [
"/usr/local/bin/gridmind-server", # Docker path
"./gridmind-server", # Local Linux/Mac
"./gridmind-server.exe", # Local Windows
]
binary = None
for path in binary_paths:
if os.path.exists(path):
binary = path
break
if binary:
print(f"[GridMind-RL] Starting Go server on port {port}", flush=True)
os.execv(binary, [binary])
else:
# Fallback: try go run for development
print(f"[GridMind-RL] Binary not found, trying go run main.go", flush=True)
try:
proc = subprocess.run(
["go", "run", "main.go"],
env={**os.environ, "PORT": port}
)
sys.exit(proc.returncode)
except FileNotFoundError:
print(
"[GridMind-RL] ERROR: Neither compiled binary nor 'go' found.\n"
"Build with: go build -o gridmind-server main.go\n"
"Or run in Docker: docker run -p 7860:7860 gridmind-rl",
file=sys.stderr
)
sys.exit(1)
if __name__ == "__main__":
main()