No description
  • Python 56.1%
  • JavaScript 30.2%
  • CSS 9.4%
  • HTML 4.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
fabi5210 bf44b08ee9
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
fix(ci): New project version
2026-10-23 17:12:23 +02:00
.vscode fix(gitignore): update .gitignore to allow VS Code recommended extensions 2026-10-09 22:04:21 +02:00
API fix(ci): New project version 2026-10-23 17:12:23 +02:00
CLI fix(ci): New project version 2026-10-23 17:12:23 +02:00
core feat(UI+API): Refactor API and UI integration, enhance tool call handling, and improve testing 2026-10-21 20:41:14 +02:00
tests feat(UI+API): Refactor API and UI integration, enhance tool call handling, and improve testing 2026-10-21 20:41:14 +02:00
UI feat(UI+API): Refactor API and UI integration, enhance tool call handling, and improve testing 2026-10-21 20:41:14 +02:00
.gitignore feat(UI): Implemented a GUI 2026-10-18 20:52:09 +02:00
.woodpecker.yml feat(UI+API): Refactor API and UI integration, enhance tool call handling, and improve testing 2026-10-21 20:41:14 +02:00
pyproject.toml fix(ci): New project version 2026-10-23 17:12:23 +02:00
README.md feat(core): Implement auto-approval feature for specified tools and enhance session management 2026-10-18 20:57:07 +02:00
test_config.json feat(core+CLI): Added Model Selector 2026-10-16 19:17:57 +02:00
ty.toml feat(cli): Add CLI User Interface 2026-09-26 21:09:48 +02:00

Farning

A coding Harness for any API, that supports:

  • OpenAI Endpoints
  • groq (Comming Soon)
  • Anthropic (Coming Soon)

Supported tools:

  • Read File
  • Write File
  • Delete File
  • Execute Command

Setup

go to the wiki

Bundles

Bundels are different UIs for FarningCode, like CLI, in development the core Package gets copied in the

Installation

You can install uv using pip:

pip install uv

or directly from the source: astral.sh/uv

Usage

To run selected tools without an approval prompt, add an explicit allowlist to your active config.json (or test_config.json / dev_config.json):

{
  "AUTO_APPROVE_TOOLS": ["file_reader"]
}

Add this property alongside your existing settings. Supported names are file_reader, file_writer, file_deleter, and execute_code. An omitted property or an empty list keeps manual approval for every tool. Names match exactly; wildcards do not grant approval. Restart after editing the file. Allowlisted tools execute immediately, including writes, deletions, and commands if enabled. The web UI and terminal UI retain tool entries labeled Auto-approved, even when execution finishes between polls.

After installing uv, you can initialize it using the following command:

uv init

to add a new component, use the following command:

uv add <component_name>

Execute the following command to run uv:

uv run main.py

Linting

To lint your Python code using ruff and typecheck using ty, execute the following commands:

To lint your Python code using ruff.

uvx ruff check

To format your Python code using ruff:

uvx ruff format

for typechecking your Python code using ty:

uvx ty check

Build

To build the standalone CLI, run the following command from the repository root:

uv --project CLI run pyinstaller --noconfirm --distpath CLI/dist --workpath CLI/build CLI/main.spec

The executable will be located at CLI/dist/main (main.exe on Windows).

CiCD

The Linting and typechecking is also integrated into the CI/CD pipeline to ensure code quality before merging changes. This setup uses Woodpecker CI. The Ci/CD workflow will automatically run the linting and typechecking steps defined in the .woodpecker.yml configuration file.

DISCLAIMER: The Ci/CD workflow just works if a uv init was executed in the repository beforehand. And at least one component has been added using uv add <component_name>.

Model configuration

In the CLI, use /settings (or Ctrl+,) to add, edit, or remove model profiles. Each profile has a display name, AI endpoint type, model ID, API host, and optional API key. Save & select saves all profiles and selects the profile being edited. Model IDs must be unique. Hosts may include /v1 or just the server root.

Use /model to open the model picker, or /model <model ID or display name> to switch directly. Selection is saved and used for subsequent tasks without restarting. A task already running retains its starting model configuration. Only OpenAI-compatible chat completion endpoints are currently supported.

Configuration uses MODELS and SELECTED_MODEL, for example:

{
  "MODELS": [
    {
      "DISPLAY_NAME": "Local coder",
      "AI": "openai",
      "MODEL": "my-model",
      "API_HOST": "http://localhost:11434",
      "API_KEY": ""
    }
  ],
  "SELECTED_MODEL": "my-model",
  "IGNORE_FOLDERS": [".git", "__pycache__", ".venv"]
}

Legacy single-model configuration and global AI endpoint types are migrated into model profiles in memory when loaded and saved in the new format the next time you save settings or select a model. The settings dialog shows the active configuration file path.

Run the model and CLI tests from the repository root:

CLI/.venv/bin/python -m unittest discover -s tests -v