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.

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.15.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.15-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fj_ai-1.0.15.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fj_ai-1.0.15.tar.gz
Algorithm Hash digest
SHA256 5efacb5a78ae5638f7e80a334f9ab396b9a57f230d9264ee640fd075dc19b672
MD5 2d8075881acb7e34740ec510f6d0aa84
BLAKE2b-256 f58a55c1fc144d8340120afda642a3d4933f3a3ddb2db6d8b72f85e06cd371c8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fj_ai-1.0.15-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fj_ai-1.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 5ef3c610d9b68c861253ea875ceab5955c62401de02f0f2c2cec131287045fe8
MD5 fe545050bf4e5f70db0cca7631646820
BLAKE2b-256 174c29dcea8981800291dd18d9b7130bc6fa2ea600692d9055e7edc83a71eefa

See more details on using hashes here.

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