title: PSYCHE web
emoji: 🧠
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
PSYCHE web (Hugging Face Space)
Barebones Flask app: Home, Analysis (DuckDB + preset queries over demo CSV), Replay (placeholder).
This Space uses Flask + gunicorn, not the FastAPI starter Hugging Face shows in the empty-Space wizard. That is intentional.
Live Space: https://huggingface.co/spaces/ystrittm/psyche
Run locally
From this directory:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export FLASK_APP=app.py
flask run --host 0.0.0.0 --port 7860
Open http://127.0.0.1:7860/.
Deploy without a second repo (work only in PSYCHE)
Hugging Face’s onboarding often shows:
git clone https://huggingface.co/spaces/ystrittm/psyche
# password = HF access token (write) from https://huggingface.co/settings/tokens
That clones the Space’s own Git repository on Hugging Face (not GitHub). It is valid: you edit there, then git push with the same token. Many people work that way.
For PSYCHE we also support not maintaining that second clone: keep one checkout of PSYCHE on GitHub, edit space/ here, and deploy with the options below (they push the space/ subtree to the same HF URL).
Hugging Face does not “connect” a GitHub repo in Space settings
There is no reliable toggle like “use this GitHub repo as the source” in the Space UI. Rename or transfer only changes owner or name (and the Space URL / git remote); it does not sync GitHub.
To deploy the space/ folder from PSYCHE, use one of the options below.
Option A — Push from your machine (simplest)
From the PSYCHE repo root, space/ must be committed (the push script uses git subtree split, which only sees tracked files):
git add space
git commit -m "Add Hugging Face Space app"
Then:
export HF_TOKEN=hf_... # write token: https://huggingface.co/settings/tokens
./scripts/push_hf_space.sh
Using a .env file: copy .env.example to .env in the repo root (.env is gitignored), put HF_TOKEN=hf_... inside, then run ./scripts/push_hf_space.sh — the script loads .env automatically.
If you already use source scripts/activate.sh with a secrets file (scripts/local.env.example), putting export HF_TOKEN=... in that secrets file also works before running the script.
That uses git subtree split to push only the space/ tree to spaces/ystrittm/psyche (no second working copy). If the Space still has the default FastAPI starter and push is rejected, run once:
HF_SPACE_FORCE=1 ./scripts/push_hf_space.sh
Optional: HF_USERNAME (your HF username) if oauth2 as user does not work with your token setup.
Option B — GitHub Actions (push to GitHub → Space updates)
This repo includes .github/workflows/sync-psyche-space.yml. Add a repository secret HF_TOKEN (same write token as above): GitHub → Settings → Secrets and variables → Actions → New repository secret.
When you push to main and space/ changes, the workflow runs scripts/push_hf_space.sh so you do not have to run it locally.
Option C — Second clone (optional)
You can clone https://huggingface.co/spaces/ystrittm/psyche elsewhere and copy from space/, but it duplicates work—prefer A or B.
Optional: add HF_TOKEN in Space → Settings → Secrets when the app reads private Hub data (not used by the current demo).
GitHub → this URL
Set the PSYCHE GitHub repo Website to https://huggingface.co/spaces/ystrittm/psyche and link it from the root README / docs.