Skip to main content

fj — one-shot CLI coding agent powered by soothe-nano

Project description

fj

PyPI version PyPI - Python Version CI License: MIT

🎥 Watch the demo video on Vimeo

fj is a one-shot coding-agent CLI for the terminal. Type a question, get an answer — no UI, no context-switching:

fj explain this repo
fj -f what did we decide last time?
fjf what did we decide last time?  // The same as fj -f

It runs on soothe-nano — tools, skills, MCP, subagents, and progressive loading — with SQLite persistence so every thread is resumable.

Package: fj-ai · Runtime: soothe-nano


Install

pip install fj-ai
# or
uv tool install fj-ai

Requires Python 3.11+.

Configure

Option A — Local model (guided):

fj setup

Walks you through an OpenAI-compatible endpoint (Ollama, LM Studio, vLLM, …) and writes the basics to ~/.soothe/config/nano.yml.

Option B — Cloud (no config file):

export OPENAI_API_KEY=sk-...
fj summarize README.md

Missing nano.yml falls back to OPENAI_API_KEY or ANTHROPIC_API_KEY.

Doctor

Check whether this machine can run fj (tool binaries, providers, observability). Requires soothe-nano with the diagnose API (1.0.8+):

fj doctor
fj doctor --deep
fj doctor --live-llm
fj doctor --format json

Run

fj who are you
fj list Python files in this directory
fj refactor the parser to use dataclasses

Conversation

Threads persist across runs in SQLite. Continue the latest, jump to a specific one, or list them:

fj -f and now add tests          # continue latest active thread
fj -t abc123 continue from here  # continue a specific thread
fj -l                            # list recent threads

Flags

fj [options] [--] <query...>
Flag Meaning
-f / --follow Continue the latest active thread
-t ID / --thread Continue (or pin) a specific thread
-l / --list List recent threads (newest first)
-n NUM How many threads -l shows (0 = all)
-c PATH / --config Use an alternate nano.yml
-w DIR / --workspace Workspace root
--no-stream Wait for the full answer instead of streaming
-v / --verbose Mirror tool calls on stderr

Shell completion (AI-assisted, predicts natural-language intents, not just flags):

eval "$(fj completion zsh)"     # or: fj completion bash


Extend

Skills

fj ships AgentSkills (planning, TDD, debugging, document tools, MCP builder, and more) and supports your own via nano.yml:

skills:
  - ~/.soothe/skills/my-reviewer
  - ./skills/deploy

Each skill is a SKILL.md with frontmatter; progressive loading keeps the catalog compact and loads on demand.

MCP servers

Connect any Model Context Protocol server:

mcp_servers:
  - name: filesystem
    transport: stdio
    command: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]

With defer: true (default), MCP tools activate on demand.


Development

git clone https://github.com/caesar0301/fj-ai.git
cd fj-ai
make sync-dev
make test
make lint

CI runs format, lint, and tests on Python 3.11–3.13; releases go GitHub Release → PyPI.

Powered by

Built on soothe-nano. For a full TUI coding agent from the same stack, see mirasoth/soothe.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fj_ai-1.0.18.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fj_ai-1.0.18-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file fj_ai-1.0.18.tar.gz.

File metadata

  • Download URL: fj_ai-1.0.18.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fj_ai-1.0.18.tar.gz
Algorithm Hash digest
SHA256 6bb5c414533de58ffcfbad228d0d66a0b2ec251988aa674d417b8b7d74b83545
MD5 46b9df43538e2e991b3d542f1295a054
BLAKE2b-256 b458c79bb22025c19df9dbd959882748514f501cc2e614711ada28c54e5344e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for fj_ai-1.0.18.tar.gz:

Publisher: release.yml on caesar0301/fj-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fj_ai-1.0.18-py3-none-any.whl.

File metadata

  • Download URL: fj_ai-1.0.18-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fj_ai-1.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 bb4f4c68c117675696f724820bd037503e95e92ec9467c179e77148e3879cc01
MD5 248888072ba11c27ce1c5b42aa563d00
BLAKE2b-256 4d94be98a1986e4be11fe90f7f24fb0085a27b1de06dc9e834dc9758e8cba8d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fj_ai-1.0.18-py3-none-any.whl:

Publisher: release.yml on caesar0301/fj-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page