######### OneChat ######### OneChat is a Go program. It prints its name. It is in early development. Linux is supported. **************** Data directory **************** OneChat keeps its data and its token file in one directory. It uses the first of these: #. ``ONECHAT_DIR``, when it is set. #. ``$XDG_DATA_HOME/onechat``, when ``XDG_DATA_HOME`` is an absolute path. A relative value is ignored. #. ``~/.local/share/onechat``. With no home directory, OneChat exits with an error. OneChat creates the directory with mode 0700. *************** Configuration *************** ``config.json`` in the data directory holds the settings. OneChat does not create it. A missing file or field takes the default, and an unknown field is an error. .. code:: json { "endpoint": "chatgpt", "compactor": {"model": "gpt-6-luna", "effort": "high"} } ``endpoint`` ``chatgpt`` (the default) sends model calls to the ChatGPT backend with the subscription login. ``api`` sends them to the OpenAI API with the key in ``OPENAI_API_KEY``, which must then be set. With ``chatgpt``, OneChat ignores ``OPENAI_API_KEY``. ``compactor`` The model and the reasoning effort of the summaries. The defaults are ``gpt-6-luna`` and ``high``. ************* Development ************* Nix supplies the Go toolchain and all tools. Enter the development shell with direnv: .. code:: console direnv allow Or enter it directly: .. code:: console nix develop The shell sets ``ONECHAT_DIR`` to ``.devenv/onechat`` in the checkout, unless it is already set. Development data goes there, and Git ignores ``.devenv``. Build and run: .. code:: console nix build ./result/bin/onechat Format and check all files: .. code:: console bin/format bin/check nix flake check