Ficsit
A lightweight coding agent harness with tool execution and validation loops. "Fix it, just sit there."
Installation
For an isolated command-line installation, use pipx:
pipx install ficsit
Alternatively, install it in your active Python environment:
pip install ficsit
Quick Start
# Start Ficsit inside the project it may access
cd /path/to/your/project
ficsit
# Or start with a specific model
ficsit --model gpt-4o-mini
# Show the installed version without loading configuration
ficsit --version
The directory where ficsit starts is the active workspace. File reads, searches,
writes, and deletes are restricted to that directory; generated files are written
there directly and are not placed in an implicit CODE/ directory.
Configuration
API Key is stored in ~/.ficsit/.env (automatically .gitignored).
ficsit config set key # Enter API Key (hidden input)
ficsit config show key # Show if set
ficsit config set base_url https://你的中转站/v1
ficsit config show
ficsit config delete base_url|model|key
Built-in Commands
| Command | Description |
|---|---|
/help |
Show help |
/status |
Show session status |
/memory |
View past session summaries |
/exit |
Exit and save session |
Security
- API Key is stored in
~/.ficsit/.env— a plaintext file. Ensure your home directory has appropriate permissions. .envis automatically added to.gitignoreto prevent accidental commits.- Guardian rules block dangerous operations (e.g.,
rm -rf /, system file writes). - File tools cannot resolve paths outside the directory where Ficsit was started.
- Shell commands run with the workspace as
cwd, but they are not an OS-level sandbox. Use a container or system sandbox before running untrusted code. - Never hardcode credentials in code.
Development
pip install -e ".[dev]"
pytest tests/ -v
ruff check .
Building A Release
python3 -m build
python3 -m twine check dist/*
This creates a wheel and source distribution in dist/. Release preparation,
clean-environment installation checks, and Trusted Publishing setup are documented
in docs/RELEASING.md.
Project Structure
ficsit/
├── cli.py # CLI entry point
├── config.py # Configuration (TOML)
├── controller.py # State machine controller
├── guardian.py # Danger action guardrails
├── classifier.py # Failure classification
├── memory.py # Session memory
├── models.py # Data models
├── repl.py # REPL interface
├── llm/ # LLM client abstraction
├── states/ # State machine states
├── tools/ # Tool system
└── validators/ # Validation system
tests/
└── ...
Platform Support
Python 3.11+, macOS / Windows / Linux.
License
Ficsit is licensed under the Apache License 2.0.
Known Limitations
- Requires OpenAI API Key
- No streaming support
- Pure synchronous execution
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ficsit-0.1.0.tar.gz.
File metadata
- Download URL: ficsit-0.1.0.tar.gz
- Upload date:
- Size: 48.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee51f230d34ce67cec76304ec6d6fc16de94889b0afabd4b406c95a751038ab5
|
|
| MD5 |
425b948ccca22ec968f6262f77291848
|
|
| BLAKE2b-256 |
d8c4ef4f0d57d8cd10c200851e8e649e05ada86e2799415c3711e35e5f8b0c6e
|
Provenance
The following attestation bundles were made for ficsit-0.1.0.tar.gz:
Publisher:
publish.yml on CaelusHu/Ficsit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ficsit-0.1.0.tar.gz -
Subject digest:
ee51f230d34ce67cec76304ec6d6fc16de94889b0afabd4b406c95a751038ab5 - Sigstore transparency entry: 2448999292
- Sigstore integration time:
-
Permalink:
CaelusHu/Ficsit@69f5b484a4e0f38da453bd9e992d286759df3fb9 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/CaelusHu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@69f5b484a4e0f38da453bd9e992d286759df3fb9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ficsit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ficsit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 48.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70eecfb7706641e463839a60afb4778ff55b8c9942ae3bd91efc07c150a56c87
|
|
| MD5 |
b48195c2052bf12375e94a8005371caa
|
|
| BLAKE2b-256 |
4ea0fd472239110b0078026eaee0517a1caf630d92d2d9b009b736ecb2499968
|
Provenance
The following attestation bundles were made for ficsit-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on CaelusHu/Ficsit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ficsit-0.1.0-py3-none-any.whl -
Subject digest:
70eecfb7706641e463839a60afb4778ff55b8c9942ae3bd91efc07c150a56c87 - Sigstore transparency entry: 2448999365
- Sigstore integration time:
-
Permalink:
CaelusHu/Ficsit@69f5b484a4e0f38da453bd9e992d286759df3fb9 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/CaelusHu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@69f5b484a4e0f38da453bd9e992d286759df3fb9 -
Trigger Event:
push
-
Statement type: