{"id":48881178,"url":"https://github.com/chuckb/trs-ai","last_synced_at":"2026-04-16T03:02:54.315Z","repository":{"id":349879268,"uuid":"1203844076","full_name":"chuckb/trs-ai","owner":"chuckb","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-07T23:21:01.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-08T01:24:05.333Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chuckb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-07T12:44:16.000Z","updated_at":"2026-04-07T23:21:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chuckb/trs-ai","commit_stats":null,"previous_names":["chuckb/trs-ai"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/chuckb/trs-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuckb%2Ftrs-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuckb%2Ftrs-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuckb%2Ftrs-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuckb%2Ftrs-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chuckb","download_url":"https://codeload.github.com/chuckb/trs-ai/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuckb%2Ftrs-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31869051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-16T03:02:50.801Z","updated_at":"2026-04-16T03:02:54.307Z","avatar_url":"https://github.com/chuckb.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TRS-AI\n\nBootable **Fedora** appliance (Milestone 1) that lands in **MBASIC** on the console, with `SAVE` / `LOAD` on a writable disk image. Image build is **mkosi**; orchestration lives under [`appliance/`](appliance/).\n\n## MBASIC submodule\n\nInterpreter sources are **not** vendored as a plain copy in this repo: use the **[chuckb/mbasic](https://github.com/chuckb/mbasic)** fork as a **git submodule** at `mbasic/` (upstream: [avwohl/mbasic](https://github.com/avwohl/mbasic)).\n\n### First clone\n\n```bash\ngit clone --recurse-submodules https://github.com/chuckb/trs-ai.git\ncd trs-ai\n```\n\n### Already cloned without submodules\n\n```bash\ngit submodule update --init --recursive\n```\n\n### Replacing a full `mbasic/` tree with the submodule\n\nIf you previously had MBASIC checked out as normal files and want to switch:\n\n```bash\nrm -rf mbasic\ngit submodule update --init --recursive\n```\n\n(If `mbasic/` was tracked by git, remove it from the index first: `git rm -rf mbasic`, then add the submodule.)\n\n### First-time publish to `chuckb/trs-ai` (maintainer)\n\nIf this tree already contains a **full** `mbasic/` directory (not a submodule gitlink yet), Git will not let you `submodule add` into a non-empty path. Typical sequence:\n\n```bash\ngit init\nmv mbasic mbasic.vendor\ngit submodule add https://github.com/chuckb/mbasic.git mbasic\ngit submodule update --init --recursive\n# diff or sync any local-only changes from mbasic.vendor/, then rm -rf mbasic.vendor\ngit add appliance docs README.md NOTICE LICENSE .gitignore .gitmodules mbasic\n```\n\n`git submodule add` records the URL in **`.gitmodules`** and adds **`mbasic`** as a gitlink; commit those with the rest of the tree. (If a hand-written `.gitmodules` was already present, Git updates it to match.)\n\n## Host Python (development and tests only)\n\n**The bootable appliance does not use a virtualenv.** The guest runs MBASIC with the image’s **system** `/usr/bin/python3` and the tree under `/opt/trs-ai/mbasic` (see [`mkosi.postinst.chroot`](appliance/mkosi/mkosi.postinst.chroot)); nothing in the image expects `venv` or `pip`.\n\nOn your **workstation**, use any Python virtual environment you like for editable MBASIC installs, pytest, and tooling. Path is entirely up to you; there is no required location in the repo.\n\n```bash\npython3 -m venv /path/you/prefer/trs-ai-dev    # or mbasic/.venv, uv, pipx, etc.\nsource /path/you/prefer/trs-ai-dev/bin/activate\ncd mbasic\npip install -e \".[dev]\"   # once, or after dependency changes\npython -m pytest tests/regression/ai/ -v\n```\n\nActivate your venv **before** `pip` or `pytest` so dependencies stay off the system Python. Example: `source ~/pyenvs/trs-ai/bin/activate` if you use that layout (optional; any path works). Hey Cursor...this means you. Use this directory.\n\nOptional convenience: if you keep a venv in a fixed place, your shell can `source …/bin/activate` or set `PATH` to that venv’s `bin`—for example some maintainers use `~/pyenvs/trs-ai`, which is only a habit, not something the project enforces.\n\nMore detail: [Milestone 1 architecture / dependencies](docs/architecture_milestone1_dependencies.md) (host vs guest).\n\n## Building the Milestone 1 image (Fedora / QEMU)\n\nOn a Fedora-like host with `mkosi`, QEMU, `guestfish`, etc.:\n\n```bash\n./appliance/scripts/check-deps.sh\n./appliance/scripts/build-image.sh\n```\n\nThe raw disk image is written under `${XDG_CACHE_HOME:-$HOME/.cache}/trs-ai-basic/output/` by default (see script output). Override staging with `TRS_AI_MKOSI_STAGEDIR` if your checkout lives on a filesystem without xattrs.\n\n**`./appliance/scripts/build-image.sh --arch aarch64`** builds a **Fedora AArch64** disk for **QEMU UEFI** (`~/.cache/trs-ai-basic-aarch64/output/`). It is **not** the Raspberry Pi SD card image.\n\n## Raspberry Pi OS (Pi 500 / Pi hardware)\n\nUse **pi-gen** (see [docs/appliance_raspberry_pi_os_plan.md](docs/appliance_raspberry_pi_os_plan.md)):\n\n```bash\n./appliance/scripts/build-pi-os-image.sh\n```\n\nPrefer **Docker** on Fedora; output appears under the cached pi-gen tree’s **`deploy/`** directory. Flash a **`.img`** with `flash-appliance-sd.sh` by passing the image path explicitly.\n\n## Run and smoke test\n\n```bash\n./appliance/scripts/run-vm.sh\n./appliance/scripts/smoke-appliance-vm.sh   # Milestone 1: SAVE/LOAD/RUN (optional: -v)\n./appliance/scripts/smoke-appliance-vm-m2.sh   # Milestone 2: AILOAD + RUN (fixture backend)\n./appliance/scripts/smoke-appliance-vm-m3.sh   # Milestone 3: AIMERGE / AIDIFF / AIAPPLY + RUN\n```\n\nFor the M2/M3 scripts, set **`TRS_AI_PYTHON`** if you want a specific interpreter (e.g. your venv’s `python3`) instead of `PATH`’s `python3`. The guest image does not use a venv.\n\n## Documentation\n\n- [Milestone 1 dependencies and architecture](docs/architecture_milestone1_dependencies.md)\n- [Fedora AArch64 QEMU UEFI only](docs/appliance_aarch64_rpi_uefi_plan.md) (not Pi hardware)\n- [Raspberry Pi OS Lite + TRS-AI](docs/appliance_raspberry_pi_os_plan.md)\n- [Milestone 2: `AILOAD` and AI env](docs/architecture_milestone2_aiload.md)\n- [Milestone 3: AI editing and pending buffer](docs/architecture_milestone3_ai_editing.md)\n- [Appliance concept](docs/trs80_ai_basic_appliance_concept.md)\n\n## License\n\nThis repository is intended to be used together with **GPL-3.0** MBASIC. The full license text is in [LICENSE](LICENSE) (same as `mbasic/LICENSE`). See [NOTICE](NOTICE) for submodule attribution and fork pointers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuckb%2Ftrs-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchuckb%2Ftrs-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuckb%2Ftrs-ai/lists"}